【发布时间】:2020-01-25 03:15:02
【问题描述】:
我可以使用守卫来测试参数是否为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
【问题讨论】:
标签: elixir truthiness guard-clause