我可以在这个 Elixir 匿名函数中避免元组参数吗?
Posted
技术标签:
【中文标题】我可以在这个 Elixir 匿名函数中避免元组参数吗?【英文标题】:Can I Avoid Tupled Parameters In This Elixir Anonymous Function? 【发布时间】:2014-02-27 16:54:51 【问题描述】:我正在研究“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 更有经验的人提出任何建议。
【问题讨论】:
【参考方案1】:您可以通过以下方式解决这个特定的练习:
fizzbuzztest = fn
0,0,_ -> "FizzBuzz"
0,_,_ -> "Fizz"
_,0,_ -> "Buzz"
_,_,v -> "#v"
end
【讨论】:
不知道为什么我认为我需要对参数进行元组才能使其工作。谢谢。fn
的早期示例并没有说明您可以像上面那样对参数进行模式匹配。几乎所有的格式都是a = fn(arg1, argn) end
以上是关于我可以在这个 Elixir 匿名函数中避免元组参数吗?的主要内容,如果未能解决你的问题,请参考以下文章