Elixir Language
Inbyggda typer
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