Это потому, что в Elixir, как и в Erlang, нет типа String
Что бы это ни значило.Струны, улыбки.Это так просто:
iex(4)> [45, 67, 34]
'-C"'
В iex список чисел интерпретируется как последовательность символов, где каждое число является числовым кодом для некоторого символа.Если вы посмотрите на диаграмму ASCII , вы увидите, что:
45 -> -
67 -> C
34 -> "
Посмотрите на это:
iex(5)> 'hi' == [104, 105]
true
В эликсире, [104, 105]
и [45, 67, 34]
называются чарлистами.Ярлык для создания списка [104, 105]
- 'hi'
.Это результат ужасной функции Erlang, но, поскольку Elixir может взаимодействовать с Erlang, существует необходимость в чарлистах.Charlist Elixir является эквивалентом строки Erlang, а строка Erlang эквивалентна списку чисел.
Предположим, что ваша программа Elixir выполняет кучу критических математических вычислений с результатом:
result = [76, 64, 78, 79]
и вы хотите отобразить эту информацию пользователю, чтобы он мог настроить параметры дефибриллятора, чтобы спасти жизнь пациента, поэтому вы делаете это:
IO.puts "Set the defibrillator dials to these numbers: #{result}"
Вот что увидит пользователь:
Set the defibrillator dials to these numbers: L@NO
Здесь умирает пациент.