有没有办法在函数保护子句中使用1
或or
表达式:
and
答案 0 :(得分:4)
Guard表达式不支持&&
和||
(它接受LHS上的任何值),但仅支持and
和or
(仅接受LHS上的布尔值) )。由于is_nil
始终返回布尔值,因此您可以切换为使用and
和or
:
defmodule Test do
def testfn(arg1, arg2) when is_nil(arg1) or is_nil(arg2), do: :nothing
def testfn2(arg1, arg2) when is_nil(arg1) and is_nil(arg2), do: :nothing
end
https://hexdocs.pm/elixir/master/guards.html包含守卫中允许的所有函数/运算符的列表。