gpt4 book ai didi

erlang - 哪个更可取? guard 还是案件?

转载 作者:行者123 更新时间:2023-12-03 21:39:47 25 4
gpt4 key购买 nike

样式 1:

a(X) when X>1 -> 
...omitted;
a(X) when X ->
...omitted.

款式2
a(X) ->
case X>1 of
true-> ...ommited;
false-> ...ommited
end.

====更新===

正如@rviding 所说,我将比较更新如下:

样式 1:
a(X) when X>1 -> 
...omitted;
a(X) ->
...omitted.

款式2
a(X) ->
case X>1 of
true-> ...ommited;
false-> ...ommited
end.

最佳答案

Learn You Some Erlang's section on function syntax声明函数子句和 case 语句基本相同,除了一个区别:子句中的模式匹配可以处理多个模式,而 case 语句只能处理一个语句。

除此之外,我相信这是一个品味问题。当 case 确实不同时,我倾向于使用不同的 function 子句(例如:完整的函数将表现不同),并且当我希望代码发散并随后再次合并时,我使用 case 语句,例如根据表达式计算变量的值。

编辑
正如 RobertAloi 在下面的评论中指出的那样,使用 case .. of 时您并没有真正受到限制。 .此外,正如 rvirding 所写,编译器在将不同的表达式包装在一个元组中时会进行一些优化,以允许对其进行匹配。

关于erlang - 哪个更可取? guard 还是案件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12363882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com