Подтвердить что ты не робот

Что означает обозначение слэш в Эликсире?

В документах Elixir они используют нечетную нотацию со слэшем, например:

is_boolean/1
IO.puts/1
String.length/1
is_function/2
++/2

Я просто догадываюсь, но я думаю, что это относится к артерии. Но если это так, то почему дьявол не упоминается нигде в документах? Это не похоже на то, что это стандартная конвенция в области ИТ (по крайней мере, не такая, которую я когда-либо видел за 20 лет в ИТ).

4b9b3361

Ответ 1

Из стр. 2, Основные типы документации Начало работы:

Примечание. Функции в Elixir идентифицируются по имени и количеству аргументов (т.е. arity). Поэтому is_boolean/1 идентифицирует функцию с именем is_boolean, которая принимает 1 аргумент. is_boolean/2 идентифицирует другую (несуществующую) функцию с тем же именем, но с другой arity.

Это также описано в Синтаксис Erlang/Elixir: The Crash Course:

Здесь мы создаем модуль с именем hello_module. В нем мы определяем три функции, первые два доступны для других модулей для вызова через директиву export вверху. Он содержит список функций, каждый из которых написан в формате <function name>/<arity>. Arity обозначает количество аргументов.

Я мог бы предположить, что это, как правило, отодвигается в сторону примечания в литературе Эликсира, потому что оно происходит прямо из Эрланг. Хотя знания Erlang не должны быть необходимы для использования Elixir, такие пропуски являются распространенной ошибкой, когда люди документируют программное обеспечение, полученное как Elixir, от Erlang.

Ответ 2

Вы правильно догадались, что это арность функции. Причина, по которой это важная информация (которая часто не включена во многие языки), заключается в том, что функции с одинаковым именем, но разной арностью являются разными функциями - примером этого являются Enum.reduce/2 и Enum.reduce/3. Функция в Elixir определяется тремя вещами: модуль, имя и arity. Если какой-то один из них отличается, то у вас другая функция.

Обозначения также упоминаются в руководстве по началу работы: 1, 2.