Есть ли способ увидеть охранники функции, не видя исходный код?Erlang/Elixir охранники и arity
Учитывая пример функции (в эликсира):
def divide(x, y) when y != 0 do
x/y
end
Как один выяснить, что есть охранник разделяй/2 без доступа к исходному коду, и как бы один найти информацию об этом охранником или то, что ожидает этот шаблон для соответствия шаблону?
Я наблюдал за разговором Криса МакКорда (создателя феникс-фрейма Эликсира) от Ruby Conf 2014. Во время разговора Крис описывал охранников, и кто-то спросил, есть ли способ проверить функцию, которая будет показывать охранники функции.
Это вопрос из разговора:
https://www.youtube.com/watch?v=5kYmOyJjGDM&t=5188
Спрашивается вскоре после того, как т = время видео.
Просто интересно - какой прецедент здесь? Не следует ли защищать условия, чтобы вы избегали писать плохой код? Поэтому, если вы нарушите условие охраны, перепишите код. –
Мне тоже было любопытно. Один из вариантов использования, который я могу себе представить, - это охраняемая функция, которая (например) допускает только числа от 1 до 10. Как это знать? Ответ, безусловно, «Посмотрите на документы» или «Посмотрите на исходный код», но я надеялся, что будет такой ответ, как «Просто используйте функцию' '' SomeModule.show_guards/1''' и передайте функции интереса ». –