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

Ono*_*cci 3 elixir pattern-matching

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

fizzbuzztest = fn
   {0,0,_} -> "FizzBuzz"
   {0,_,_} -> "Fizz"
   {_,0,_} -> "Buzz"
   {_,_,v} -> "#{v}"
end
Run Code Online (Sandbox Code Playgroud)

这样称呼:

fizzbuzztest.({0,0,8}) # "FizzBuzz"
Run Code Online (Sandbox Code Playgroud)

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

Rya*_*ell 5

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

fizzbuzztest = fn
   0,0,_ -> "FizzBuzz"
   0,_,_ -> "Fizz"
   _,0,_ -> "Buzz"
   _,_,v -> "#{v}"
end
Run Code Online (Sandbox Code Playgroud)