Show Menu
Cheatography

Elixir_ru 1 Cheat Sheet (DRAFT) by

Изучите X за Y минут Где X=elixir https://learnxinyminutes.com/docs/ru-ru/elixir-ru/ - Базовые типы (Числа, Атомы, Кортежи, Списки, Бинарные данные, Строки, Диапазоны, Карты ) - Операторы (Математические, Булевые, Relaxed-truthy, Операторы сравнения)

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Числа

3
целое число
0x1F
целое число
3.0
число с плавающей запятой

Кортежи

{1,2,3} # кортеж
elem({1, 2, 3}, 0) #=> 1
Кортежи, хранятся в памяти послед­ова­тельно.
Получить доступ к элементу кортежа мы можем с помощью функции "­ele­m"

Атомы

:hello # атом
Атомы, которые являются нечисл­овыми конста­нтами. Они начинаются с символа
:

Бинарные данные

<<1­,2,­3>>

Оператор " ? "

?a #=> 97
Оператор "­?" возвращает целое число, соотве­тст­вующее данному символу.

Карты (Maps)

Maps are key-value pairs:
genders = %{"d­avi­d" => "­mal­e", "­gil­lia­n" => "­fem­ale­"}
gender­s["d­avi­d"] #=> "­mal­e"
Maps with atom keys:
genders = %{david: "­mal­e", gillian: "­fem­ale­"}
gender­s.g­illian #=> "­fem­ale­"
 

Строки

"­hel­lo"
Elixir­-строка (заключена в двойные кавычки)
'hello'
Erlang­-строка (в одинарные кавычки)
Все строки предст­авлены в кодировке UTF-8:
"­при­вет­" #=> "­при­вет­"

Elixir­-строки / Erlang­-строки

<<?a, ?b, ?c>> #=> "­abc­"
Elixir­-строки являются бинарными данными
[?a, ?b, ?c] #=> 'abc'
Erlang­-строка — это на самом деле список

Конкат­енация строк

"­<>" - для объеди­нения бин. данных (и Elixir­-строк)
<<1­,2,­3>> <> <<4­,5>> #=> <<1­,2,­3,4­,5>>
"­hello " <> "­wor­ld" #=> "­hello world"
"­++" - для объеди­нения списков (и Erlang­-строк)
[1,2,3] ++ [4,5] #=> [1,2,3­,4,5]
'hello ' ++ 'world' #=> 'hello world'

Матема­тич­еские операции

1 + 1 # 10 - 5 # 5 * 2 # 10 / 2
div(10, 2) #=> 5
целочи­сленное деление
rem(10, 3) #=> 1
получение остатка от деления
В Elixir оператор "­/" всегда возвращает число с плавающей запятой.

Relaxed boolean

1 || true #=> 1
false && 1 #=> false
nil && 20 #=> nil
!true #=> false
a || b gives true if a is true. Otherwise, it gives b.
a && b gives false if a is false. Otherwise, it gives b.
!a gives false if a is true. Otherwise, it gives true.
 

Списки (Lists)

[1,2,3]
Списки, реализ­ованы как связные списки
We can access the head and tail of a list as follows:
[head | tail] = [1,2,3]
head #=> 1
tail #=> [2,3]

Диапазоны (Ranges)

Ranges are repres­ented as "­sta­rt..en­d" (включ­ите­льно): 1..10 #=> 1..10
Сопост­авление с образцом применимо и для ranges:
lower..upper = 1..10
[lower, upper] #=> [1, 10]

Операторы сравнения

a===b
strict equality (so 1 === 1.0 is false)
a!==b
strict inequality (so 1 !== 1.0 is true)
a==b
equality (so 1 == 1.0 is true)
a!=b
inequality (so 1 != 1.0 is false)
a>b
greater than the other (so 2>1 is true)
a>=b
greater than or equal (so 2>=1 is true)
a<b
less than the other (so 1<2 is true)
a<=b
less than or equal (so 1<=2 is true)
Elixir позволяет сравнивать значения разных типов:
1 < :hello #=> true
Правило: число < атом < ссылка < функция < порт < процесс < кортеж < список < строка

Булевые: or, and, not.

true and true #=> true
false or true #=> true
1 and true #=> ** (BadBo­ole­anE­rror)
В качестве первого аргумента эти операторы ожидают булевое значение.