我目前正在学习灵丹妙药,我想知道这三个实施是否真的是一个选择的问题,或者有一些与绩效或其他事情有关的最佳实践,换句话说是否有最好的实践?这些不同的函数定义有哪些优缺点?
我的第一个实现是第三个(我知道),但是如果我不得不选择,我会首先选择第二个。第一个看起来很奇怪,因为我定义了3次函数
Thx!
@spec count(list) :: non_neg_integer
def count(l), do: count(l, 0)
defp count([], acc), do: acc
defp count([_ | tail], acc), do: count(tail, acc + 1)
@spec count(list) :: non_neg_integer
def count(l) do
case l do
[] -> 0
[_|tail] -> 1 + count(tail)
end
end
@spec count(list) :: non_neg_integer
def count(l) do
do_count(l, counter)
end
defp do_count(list, counter \\ 0) do
cond do
list == [] -> counter
true ->
counter = counter + 1
do_count(tl(list), counter)
end
end
我非常想改变你的问题的标题,但似乎它可能是编辑超越。请让你的问题的题目更具描述性。 –
够公平了......你能给我你想用的标题吗? – BenNG
想到的一点是“多功能头是否能更好地解决这个问题?”你现有的标题只是非常通用的。 –