Я могу использовать охранники, чтобы проверить, является ли аргумент true
:
defmodule Truth do
def true?(term) when term, do: "#{term} is true"
def true?(term), do: "#{term} is not true"
end
Это работает, как и ожидалось, для логических значений:
Truth.true?(true)
#=> "true is true"
Truth.true?(false)
#=> "false is not true"
Но это не может быть проверено на достоверность:
Truth.true?(1)
#=> "1 is not true"
Можно ли проверить на правдивость охранников?Например, может ли следующая функция быть написана с использованием охранников в стиле true?/1
выше?
def truthy?(term) do
if term, do: "#{term} is truthy", else: "#{term} is falsey"
end