Elixir:
Поиск длины строки
Как сделать:
В Elixir, чтобы получить длину строки, используйте функцию String.length/1
. Вот как:
my_string = "Привет, мир!"
length = String.length(my_string)
IO.puts(length)
Пример вывода:
13
Погружение
Внутри, строки в Elixir представлены бинарными кодировками UTF-8. Каждый символ может занимать от одного до четырёх байтов. Поэтому, когда мы вызываем String.length/1
, мы не просто считаем байты; мы считаем графемы Юникода, которые мы воспринимаем как символы.
Исторически операции с длиной строки во многих языках были ориентированы на байты и не учитывали многобайтовые символы. Подход Elixir современный и с самого начала дружественный к Unicode.
Что касается альтернатив, вы могли бы вручную считать графемы, используя рекурсию или цикл, но это ненужно и неэффективно. String.length/1
оптимизирована и идиоматична.
Реализация в Elixir использует Erlang NIF (Native Implemented Function) для String.length/1
, делая её молниеносной. Подсчёт байтов вместо графем выполняется с помощью byte_size/1
, которая подсчитывает сырые байты бинарного представления строки — полезно в низкоуровневых операциях, где кодировка не имеет значения.