2017-06-08 38 views
0

は、関数ガード条項でorまたはand式を使用する方法はあります:条件付きガード条項

defmodule Test do 
    def testfn(arg1, arg2) when is_nil(arg1) || is_nil(arg2), do: :nothing 

    def testfn2(arg1, arg2) when is_nil(arg1) && is_nil(arg2), do: :nothing 
end 

答えて

4

ガード式はサポートしていません&&||(LHS上の任意の値を受け入れます)が、唯一のandおよびor(LHSではブール値のみを受け入れます)。 is_nilは常にブール値を返しますので、あなたはandorの使用に切り替えることができます。

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は警備員に許可されているすべての機能/オペレータのリストが含まれています。