最近看了一些Erlang,模式匹配是个好东西,简单的sum函数:
突然想起来,其实Ruby里面也可以用模式匹配:
尾递归版本:
[url=http://rubyeye.herokuapp.com/articles/13]Pattern Match In Ruby[/url]
sum([]) -> 0;
sum([First|Rest]) -> First + sum(Rest).
突然想起来,其实Ruby里面也可以用模式匹配:
def sum(list)
return 0 if list.empty?
first, *rest = *list
return first + sum(rest)
end
尾递归版本:
def sum(list)
sum_acc(list, 0)
end
def sum_acc(list, s)
return s if list.empty?
first, *rest = *list
return sum_acc(rest, first + s)
end
[url=http://rubyeye.herokuapp.com/articles/13]Pattern Match In Ruby[/url]