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, 3)
3
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

V Elixire je koncept „pravdivosti” veľmi jednoduchý: iba false a nil sa považujú za nepravdivé. Každá iná hodnota, vrátane 0, "" (prázdny reťazec) a [] (prázdny zoznam), sa považuje za pravdivú. Toto prísne pravidlo umožňuje boolovským operátorom ako ||, && a ! pracovať predvídateľne s akýmkoľvek typom údajov pre podmienkovú logiku.

Ď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
** (BadBooleanError) expected a boolean on left-side of "and", got: 42
iex> not 42
** (ArgumentError) argument error

Poznámka: Operátory and a or v Elixire v skutočnosti zodpovedajú operátorom andalso a orelse v Erlangu.

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"

Záver

V tejto lekcii sme prebrali základné stavebné bloky Elixiru.

Začali sme inštaláciou Elixiru a spustením interaktívneho shellu IEx, kde sme vyhodnocovali jednoduché výrazy a okamžite videli výsledky. Odtiaľ sme preskúmali základné dátové typy: celé čísla (vrátane binárnych, oktálových a hexadecimálnych foriem), čísla s plávajúcou desatinnou čiarkou, booleovské hodnoty, atómy a reťazce.

Pracovali sme tiež so základnými operáciami ako aritmetika, booleovská logika a porovnávacie operátory. Cestou sme videli, ako Elixir pracuje s pravdivosťou — iba false a nil sú nepravdivé — a ako sa operátory ||, &&, and a or správajú rôzne v závislosti od svojich očakávaní.

Na záver sme sa pozreli na interpoláciu a zreťazenie reťazcov, dva základné nástroje pre prácu s textom.

Tieto koncepty tvoria základ každodenného vývoja v Elixire. Venujte trochu času experimentovaniu s nimi v IEx, skúste upraviť príklady a pozorujte, ako sa jazyk správa. Solídne pochopenie týchto základov výrazne uľahčí pochopenie ďalších tém.

Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!