我正在创建一个以X
和Y
作为参数的函数,如果false
为0,则返回X
,Y
为0,或者X
和Y
都是0.我目前正在使用案例陈述,但我想知道是否可以将此函数编写得更短(例如合并两者) '虚假案件分为一个案例。)
validate_input(X, Y) ->
case {X, Y} of
{0, _} -> false;
{_, 0} -> false;
_ -> true
end.
答案 0 :(得分:7)
您可以使用andalso
:
validate_input(X, Y) ->
X =/= 0 andalso Y =/= 0.
答案 1 :(得分:3)
我感到很惊讶,不,震惊在函数头中只是简单匹配还没有被推荐:
validate_input(0, _) -> true;
validate_input(_, 0) -> true;
validate_input(_, _) -> false.
"紧密"代码不是关于减少行数,而是减少你必须回忆起来解释给定代码段的概念数量。
答案 2 :(得分:1)
另一个解决方案(虽然我更喜欢legoscia)正在使用if
:
validate_input(X, Y) ->
if
X == 0; Y == 0 -> false;
true -> true
end.
答案 3 :(得分:0)
经过一番搜索后,我也找到了这个解决方案:
validate_input(X, Y) ->
case {X, Y} of
{X, Y} when X == 0; Y == 0 -> false;
_ -> true
end.
甚至更高效,正如legoscia建议的那样:
validate_input(X, Y) when X == 0; Y == 0 -> false;
validate_input(_,_) -> true.