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

Каков смысл "!", "?", "_" И ".". синтаксис в эликсире

Мне нужна помощь в понимании следующих синтаксисов в elixir !, ?, _ и .. Каковы эти синтаксисы в функции эликсира? Например Repo.get!.

Я не уверен, было ли это просто имя функции или роль. Хотя я знаю, что . предназначен для вызова анонимной функции. И _ для любого или вариационного?

4b9b3361

Ответ 1

! - Конвенция для функций, которые вызывают исключения при сбое.

? - Конвенция для функций, возвращающих логическое значение

_ - используется для игнорирования аргумента или части выражения соответствия шаблону.

. - Как вы сказали, используется для вызова анонимной функции, но также используется для доступа к функции модуля, например Mod.a(arg).

Ответ 2

Во-первых, ! и ?

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

! - приведет к возникновению исключения, если функция встретит ошибку.

Одним хорошим примером является Enum.fetch! (Он также имеет тот же Enum.fetch, который не вызывает исключение). Задает элемент в указанном индексе (на основе нуля). Вызывает OutOfBoundsError, если данная позиция находится за пределами диапазона коллекции.

? - используется, чтобы показать, что функция вернет логическое значение, истинное или ложное. Одним из хороших примеров является Enum.any?, который возвращает true, если функции истинны для любого значения, в противном случае возвращает false

_ - Это игнорирует аргумент в функции или в сопоставлении с образцом. Если вам нравится, вы можете дать имя после underscore.Ex - _base

Это обычно используется в конце хвостовой рекурсивной функции. Хорошим примером является функция мощности. Если вы хотите поднять любую базу чисел до 0, результат будет равен 1, поэтому на самом деле не имеет значения, какая база

defp getPower(_base,0), do: 1

. - Используется для доступа к любой функции внутри модуля или по предложению анонимной функции

iex(1)> square = fn(number) -> number * number end
iex(2)> square.(4)