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

Основи

Настройване, основни типове и операции.

Настройване

Инсталация на Elixir

Инструкции за инсталиране за всяка операционна система могат да бъдат намерени на Elixir-lang.org в раздел Installing Elixir.

След като Elixir е записан, може лесно да се потвърди инсталираната версия:

% 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 }}

Интерактивен Режим

Elixir инсталира и iex, интерактивен команден ред, който ни позволява да изпълняваме код на Elixir в реално време.

За да започнем, нека изпълним 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>

Нека го изпробваме, с няколко прости израза:

iex>
2+3
5
iex> 2+3 == 5
true
iex> String.length("The quick brown fox jumps over the lazy dog")
43

Не се притеснявайте, ако не разбирате всичко, надяваме се просто да схванете идеята.

Основни Типове

Прости Числа

iex> 255
255

Поддръжката на числа в бинарен, осмичен и шестнайсетичен вид са вградени:

iex> 0b0110
6
iex> 0o644
420
iex> 0x1F
31

Реални Числа

При Elixir, реалните числа изискват десетична точка след поне една цифра; имат 64 битова прецизност и поддържат e за номера като експонента:

iex> 3.14
3.14
iex> .14
** (SyntaxError) iex:2: syntax error before: '.'
iex> 1.0e-10
1.0e-10

Булеви стойности

Elixir поддържа true и false като булеви стойности; всичко е истинно с изключение на false и nil:

iex> true
true
iex> false
false

Атоми

Атом е константа, чието име е стойност. Ако сте запознати с езика за програмиране Ruby, те са синонимни със символи (Symbols):

iex> :foo
:foo
iex> :foo == :bar
false

Булевите true и false са също така атомите :true и респективно :false.

iex> is_atom(true)
true
iex> is_boolean(:true)
true
iex> :true === true
true

Имената на модулите в Elixir са също атоми. MyApp.MyModule е валиден атом, въпреки, че такъв модул още не е деклариран.

iex> is_atom(MyApp.MyModule)
true

Атомите се използват също за рефериране към модули от Erlang библиотеки, включително вградените.

iex> :crypto.strong_rand_bytes 3
<<23, 104, 108>>

Символни низове

Символните низове в Elixir са кодирани в UTF-8 и са поставени между двойни кавички:

iex> "Hello"
"Hello"
iex> "dziękuję"
"dziękuję"

Символните низове поддържат нов ред и специални поредици:

iex> "foo
...> bar"
"foo\nbar"
iex> "foo\nbar"
"foo\nbar"

Elixir също има по-сложни типове данни. За тях, ще научим повече, когато разглеждаме Колекции и Функции.

Основни Операции

Аритметични

Elixir поддържа основните оператори +, -, *, и / както се очаква. Важно е да се отбележи, че / винаги връща реално число:

iex> 2 + 2
4
iex> 2 - 1
1
iex> 2 * 5
10
iex> 10 / 5
2.0

Ако имате нужда от деление на прости числа или от остатъка при деление, Elixir разполага с две полезни функции да постигнете това:

iex> div(10, 5)
2
iex> rem(10, 3)
1

Булеви

Elixir предлага булевите оператори ||, &&, и !. Те поддържат всякакви типове:

iex> -20 || true
-20
iex> false || 42
42

iex> 42 && true
true
iex> 42 && nil
nil

iex> !42
false
iex> !false
true

Има три допълнителни оператора, чиито първи аргумент трябва да е булев (true и 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

Сравнения

Elixir идва с всички оператори за сравнение, с които сме свикнали: ==, !=, ===, !==, <=, >=, < и >.

iex> 1 > 2
false
iex> 1 != 2
true
iex> 2 == 2
true
iex> 2 <= 3
true

За стриктни сравнения на прости числа и реални използвайте ===:

iex> 2 == 2.0
true
iex> 2 === 2.0
false

Важно свойство на Elixir е че всеки два типа могат да бъдат сравнени, което е изключително полезно при сортиране. Не е нужно да запаметяваме реда на сортиране, но е важно да го имаме предвид:

number < atom < reference < function < port < pid < tuple < map < list < bitstring

Това може да доведе до някои интересни, но валидни сравнения, които може и да не намерите в други езици:

iex> :hello > 999
true
iex> {:hello, :world} > [1, 2, 3]
false

Интерполация на символни низове

Ако сте ползвали Ruby, интерполацията на симвлни низове в Elixir ще ви изглежда позната:

iex> name = "Sean"
iex> "Hello #{name}"
"Hello Sean"

Конкатенация на символни низове

Конкатенацията на символни низове използва оператора <>:

iex> name = "Sean"
iex> "Hello " <> name
"Hello Sean"
Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!