Sök…


Tal

Elixir kommer med heltal och flytande punktnummer . Ett heltal bokstavligt kan skrivas i decimal-, binära, oktala och hexadecimala format.

iex> x = 291
291

iex> x = 0b100100011
291

iex> x = 0o443
291

iex> x = 0x123
291

Eftersom Elixir använder bignumaritmetik, begränsas intervallet för heltal endast av det tillgängliga minnet på systemet .

Flyttalsnummer är dubbel precision och följer IEEE-754-specifikationen.

iex> x = 6.8
6.8

iex> x = 1.23e-11
1.23e-11

Observera att Elixir också stöder exponentform för floats.

iex> 1 + 1
2

iex> 1.0 + 1.0
2.0

Först lade vi till två heltal och resultatet är ett heltal. Senare lade vi till två flytande punktnummer, och resultatet är ett flytande punktnummer.

Dividering i Elixir ger alltid ett flytande punktnummer:

iex> 10 / 2
5.0

På samma sätt, om du lägger till, subtraherar eller multiplicerar ett heltal med ett flytande punktnummer blir resultatet flytande punkt:

iex> 40.0 + 2
42.0

iex> 10 - 5.0
5.0

iex> 3 * 3.0
9.0

För heltalsdelning kan man använda div/2 funktionen:

iex> div(10, 2)
5

Atoms

Atomer är konstanter som representerar ett namn på någon sak. Värdet på en atom är dess namn. Ett atomnamn börjar med en kolon.

:atom   # that's how we define an atom

En atoms namn är unik. Två atomer med samma namn är alltid lika.

iex(1)> a = :atom
:atom

iex(2)> b = :atom
:atom

iex(3)> a == b
true

iex(4)> a === b
true

Booléerna är true och false , faktiskt är atomer.

iex(1)> true == :true
true

iex(2)> true === :true
true

Atomer lagras i en speciell atombord. Det är mycket viktigt att veta att denna tabell inte samlas in i skräp. Så om du vill (eller av misstag är det ett faktum) ständigt skapa atomer - det är en dålig idé.

Binärer och bitsträngar

Binärer i elixir skapas med hjälp av Kernel.SpecialForms konstruerar << >> .

De är ett kraftfullt verktyg som gör Elixir mycket användbar för att arbeta med binära protokoll och kodningar.

Binärer och bitsträngar specificeras med hjälp av en kommaavgränsad lista över heltal eller variabla värden, bokade av "<<" och ">>". De består av "enheter", antingen en gruppering av bitar eller en gruppering av byte. Standardgruppering är en enda byte (8 bitar), specificerad med ett heltal:

<<222,173,190, 239>> # 0xDEADBEEF

Elixir-strängar konverterar också direkt till binärer:

iex> <<0, "foo">>
<<0, 102, 111, 111>>

Du kan lägga till "specifiers" till varje "segment" i en binär, så att du kan koda:

  • Data typ
  • Storlek
  • endian

Dessa specifikationer kodas genom att följa varje värde eller variabel med operatören "::":

<<102::integer-native>>
<<102::native-integer>> # Same as above
<<102::unsigned-big-integer>>
<<102::unsigned-big-integer-size(8)>>
<<102::unsigned-big-integer-8>> # Same as above
<<102::8-integer-big-unsigned>>
<<-102::signed-little-float-64>> # -102 as a little-endian Float64
<<-102::native-little-float-64>> # -102 as a Float64 for the current machine

De tillgängliga datatyper du kan använda är:

  • heltal
  • flyta
  • bitar (alias för bitsträng)
  • bitstring
  • binär
  • byte (alias för binär)
  • utf8
  • UTF16
  • UTF-32

Var medveten om att när du specificerar 'storlek' på det binära segmentet, varierar det beroende på 'typ' som valts i segmentspecifikationen:

  • heltal (standard) 1 bit
  • flyta 1 bit
  • binära 8 bitar


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow