3

我正在研究“Programming Elixir”,遇到了题为“Exercise: Functions 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 更有经验的人提出任何建议。

4

1 回答 1

5

您可以通过以下方式解决此特定练习:

fizzbuzztest = fn
   0,0,_ -> "FizzBuzz"
   0,_,_ -> "Fizz"
   _,0,_ -> "Buzz"
   _,_,v -> "#{v}"
end
于 2014-02-04T03:41:36.850 回答