我目前正在學習靈丹妙藥,我想知道這三個實施是否真的是一個選擇的問題,或者有一些與績效或其他事情有關的最佳實踐,換句話說是否有最好的實踐?這些不同的函數定義有哪些優缺點?
我的第一個實現是第三個(我知道),但是如果我不得不選擇,我會首先選擇第二個。第一個看起來很奇怪,因爲我定義了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
想到的一點是「多功能頭是否能更好地解決這個問題?」你現有的標題只是非常通用的。 –