Поиск…


чисел

Elixir поставляется с целыми числами и числами с плавающей запятой . Целочисленный литерал может быть записан в десятичных, двоичных, восьмеричных и шестнадцатеричных форматах.

iex> x = 291
291

iex> x = 0b100100011
291

iex> x = 0o443
291

iex> x = 0x123
291

Поскольку Elixir использует арифметику бигнума, диапазон целых чисел ограничен только доступной памятью в системе .

Номера с плавающей точкой являются двойной точностью и соответствуют спецификации IEEE-754.

iex> x = 6.8
6.8

iex> x = 1.23e-11
1.23e-11

Обратите внимание, что Elixir также поддерживает экспоненциальную форму для float.

iex> 1 + 1
2

iex> 1.0 + 1.0
2.0

Сначала мы добавили два целых числа, а результат - целое число. Позже мы добавили два числа с плавающей запятой, а результат - число с плавающей запятой.

Разделение в Elixir всегда возвращает число с плавающей запятой:

iex> 10 / 2
5.0

Точно так же, если вы добавляете, вычитаете или умножаете целое число на число с плавающей запятой, результат будет плавающей точкой:

iex> 40.0 + 2
42.0

iex> 10 - 5.0
5.0

iex> 3 * 3.0
9.0

Для целочисленного деления можно использовать функцию div/2 :

iex> div(10, 2)
5

атомы

Атомы - это константы, которые представляют собой имя какой-то вещи. Значение атома - это имя. Имя атома начинается с двоеточия.

:atom   # that's how we define an atom

Имя атома уникально. Два атома с одинаковыми именами всегда равны.

iex(1)> a = :atom
:atom

iex(2)> b = :atom
:atom

iex(3)> a == b
true

iex(4)> a === b
true

Логические значения true и false , фактически являются атомами.

iex(1)> true == :true
true

iex(2)> true === :true
true

Атомы хранятся в специальной таблице атомов. Очень важно знать, что эта таблица не собирает мусор. Итак, если вы хотите (или случайно это факт) постоянно создавать атомы - это плохая идея.

Бинарные и бинты

Бинарники в эликсире создаются с использованием конструкции Kernel.SpecialForms << >> .

Это мощный инструмент, который делает Elixir очень полезным для работы с бинарными протоколами и кодировками.

Бинарники и битовые строки задаются с использованием списка целых чисел или значений переменных с разделителями-запятыми, задокументированных «<<» и «>>». Они состоят из «единиц», либо группировки битов, либо группировки байтов. Группировка по умолчанию - это один байт (8 бит), указанный с использованием целого числа:

<<222,173,190, 239>> # 0xDEADBEEF

Эликсирные струны также преобразуются непосредственно в двоичные файлы:

iex> <<0, "foo">>
<<0, 102, 111, 111>>

Вы можете добавить «спецификаторы» к каждому «сегменту» двоичного кода, что позволяет вам кодировать:

  • Тип данных
  • Размер
  • Порядок байтов

Эти спецификаторы кодируются, следуя каждому значению или переменной с помощью оператора «::»:

<<102::integer-native>>
<<102::native-integer>> # Same as above
<<102::unsigned-big-integer>>
<<102::unsigned-big-integer-size(8)>>
<<102::unsigned-big-integer-8>> # Same as above
<<102::8-integer-big-unsigned>>
<<-102::signed-little-float-64>> # -102 as a little-endian Float64
<<-102::native-little-float-64>> # -102 as a Float64 for the current machine

Доступные типы данных, которые вы можете использовать:

  • целое число
  • поплавок
  • бит (псевдоним для битовой строки)
  • битовая
  • двоичный
  • байты (псевдоним для двоичного кода)
  • utf8
  • utf16
  • UTF32

Имейте в виду, что при указании «размера» двоичного сегмента он изменяется в соответствии с «типом», выбранным в спецификаторе сегмента:

  • integer (по умолчанию) 1 бит
  • float 1 бит
  • двоичные 8 бит


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow