【发布时间】:2015-08-15 20:07:42
【问题描述】:
我很好奇在定义函数时应该使用模式匹配还是使用保护子句。
以模式匹配为例:
defmodule Exponent do
def power(value, 0), do: 1
def power(value, n), do: value*power(value, n-1)
end
vs 保护子句:
defmodule Exponent do
def power(value, n) when n==0, do: 1
def power(value, n), do: value*power(value, n-1)
end
我的意思是两者都产生相同的结果,但是一种解决方案优于另一种解决方案吗?如果是,为什么?
我是 Elixir 的新手,所以这个问题的答案对我来说还不是很明显。提前致谢。
【问题讨论】:
-
您是否发现一种构造与另一种构造有任何性能差异?问一个是否比另一个更受欢迎,这让我觉得这是一个很好的例子,如果没有性能差异,就需要一个意见。投票结束。
-
老实说,我太新了,我还没有发现如何对这种东西进行基准测试......我也没有看到类似的问题,所以我决定明确提出。
-
一种实现与另一种实现之间可能存在差异,但没有任何上下文很难判断。现在你在问一个类似于“香蕉和草莓哪个更好?”的问题
-
我想,与其要求“首选”解决方案,我应该问的是出于性能原因首选哪个解决方案(因为它们都完成了相同的最终结果)。
标签: elixir