Do you want to pick up from where you left of?
Take me there

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!