Základy
Inštalácia, základné dátové typy a operácie.
Príprava
Inštalácia Elixiru
Návod na inštaláciu pre každý OS sú k dispozícii na Elixir-lang.org v sekcii Installing Elixir.
Po tom ako sa Elixir nainštaloval, môžeme jednoducho overiť verziu.
$ elixir -v Erlang/OTP {{ site.erlang.OTP }} [erts-{{ site.erlang.erts }}] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Elixir {{ site.elixir.version }}
Interaktívny mód
Elixir obsahuje nástroj iex
, interaktívny shell (príkazový riadok), ktorý dovoľuje skúšať a vyhodnocovať rôzne výrazy.
Začnime teda jeho spustením príkazom iex
:
Erlang/OTP {{ site.erlang.OTP }} [erts-{{ site.erlang.erts }}] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir ({{ site.elixir.version }}) - press Ctrl+C to exit (type h() ENTER for help) iex>
Základné dátové typy
Celé čísla
iex> 255
255
Zabudovaná podpora pre binárne, oktalové (osmičkové) a hexadecimálne čisla:
iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31
Desatinné čísla
V Elixire vyžadujú desatinné čísla aspoň jednu číslicu pred desatinnou bodkou, sú 64 bitové a podporujú zápis exponentu pomocou znaku e
:
iex> 3.14
3.14
iex> .14
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10
Booleany
Elixir podporuje true
a false
ako boolean hodnoty; všetky hodnoty, okrem false
a nil
sú pravdivé (t.j. vyhodnotia sa ako true
):
iex> true
true
iex> false
false
Atómy
Atóm je konštanta, ktorej meno je zároveň jej hodnotou. Ak poznáte Ruby, tak atóm je ekvivalentom Symbolov:
iex> :foo
:foo
iex> :foo == :bar
false
Boolean hodnoty true
a false
sú zároveň atómami :true
a :false
.
iex> is_atom(true)
true
iex> is_boolean(:true)
true
iex> :true === true
true
Názvy modulov v Elixire sú tiež atómy. MyApp.MyModule
je valídny atóm, dokonca aj keď taký modul ešte nebol deklarovaný.
iex> is_atom(MyApp.MyModule)
true
Atómy sa tiež používajú na označenie modulov z knižníc Erlangu, vrátane vstavaných.
iex> :crypto.strong_rand_bytes 3
<<23, 104, 108>>
Reťazce
V Elixire sú reťazce enkódované v UTF-8 a ohraničené dvojitými úvodzovkami (double quotes):
iex> "Hello"
"Hello"
iex> "guľôčka"
"guľôčka"
Reťazce podporujú zalomenie riadkov a escapované sekvencie:
iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"
Elixir tiež obsahuje zložitejšie dátové typy. O tých sa viac naučíme pri kolekciách a funkciách.
Základné operácie
Aritmetika
Elixir podporuje základné operátory +
, -
, *
, a /
tak, ako by ste očakávali. Dôležitý detail: /
vždy vráti desatinné číslo:
iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0
Ak potrebujete celočíselné delenie, alebo zvyšok po ňom (modulo), poskytuje na to Elixir tieto dve funkcie:
iex> div(10, 5)
2
iex> rem(10, 3)
1
Logické
Elixir poskytuje ||
, &&
, a !
ako logické operátory. Tie podporujú akékoľvek typy:
iex> -20 || true
-20
iex> false || 42
42
iex> 42 && true
true
iex> 42 && nil
nil
iex> !42
false
iex> !false
true
Ďalšie tri logické operátory vyžadujú, aby prvým operandom bola hodnota typu Boolean (true
alebo false
):
iex> true and 42
42
iex> false or true
true
iex> not false
true
iex> 42 and true
** (ArgumentError) argument error: 42
iex> not 42
** (ArgumentError) argument error
Porovnávanie
Elixir poskytuje všetky obvyklé porovnávacie operátory, na ktoré sme zvyknutí: ==
, !=
, ===
, !==
, <=
, >=
, <
a >
.
iex> 1 > 2
false
iex> 1 != 2
true
iex> 2 == 2
true
iex> 2 <= 3
true
Pre striktné porovnávanie celých a desatinných čísiel použite ===
:
iex> 2 == 2.0
true
iex> 2 === 2.0
false
Dôležitou vlastnosťou Elixiru je, že umožňuje porovnať hodnoty akýchkoľvek dvoch typov, čo je obzvlášť užitočné pri zoraďovaní. Nie je nutné učiť sa spamäti poradie typov pri zoraďovaní, ale je dobré o ňom vedieť:
number < atom < reference < function < port < pid < tuple < map < list < bitstring
Toto môže viesť k niektorým zaujímavým a valídnym porovnaniam, aké v iných jazykoch nenájdete:
iex> :hello > 999
true
iex> {:hello, :world} > [1, 2, 3]
false
Interpolácia reťazcov
Ak ste niekedy používali Ruby, interpolácia reťazcov v Elixire vám nebude cudzia:
iex> name = "Sean"
iex> "Hello #{name}"
"Hello Sean"
Spájanie reťazcov
Spájanie reťazcov používa operátor <>
:
iex> name = "Sean"
iex> "Hello " <> name
"Hello Sean"
Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!