我可以在此Elixir匿名函数中避免使用Tupled参数吗?

时间:2014-02-03 23:56:08

标签: pattern-matching elixir

我正在完成“编程Elixir”,我遇到了题为“练习:功能2”的练习。长话短说,基本上编码一个函数,如果前两个参数为0则发出Fizzbuzz,如果第一个参数为0则为Fizz,如果第二个参数为0则为Buzz,如果前两个参数均为零则为第三个参数。我想出了这个:

fizzbuzztest = fn
   {0,0,_} -> "FizzBuzz"
   {0,_,_} -> "Fizz"
   {_,0,_} -> "Buzz"
   {_,_,v} -> "#{v}"
end

这样称呼:

fizzbuzztest.({0,0,8}) # "FizzBuzz"

但我想知道 - 有什么方法可以做到这一点,而不必参数?似乎应该有一些方法来传递三个参数并处理模式匹配,但我还没有找到它。欢迎那些对Elixir更有经验的人提出建议。

1 个答案:

答案 0 :(得分:5)

您可以使用以下方法解决此特定练习:

fizzbuzztest = fn
   0,0,_ -> "FizzBuzz"
   0,_,_ -> "Fizz"
   _,0,_ -> "Buzz"
   _,_,v -> "#{v}"
end