【问题标题】:Can I Avoid Tupled Parameters In This Elixir Anonymous Function?我可以在这个 Elixir 匿名函数中避免元组参数吗?
【发布时间】: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 更有经验的人提出任何建议。

【问题讨论】:

    标签: pattern-matching elixir


    【解决方案1】:

    您可以通过以下方式解决这个特定的练习:

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

    【讨论】:

    • 不知道为什么我认为我需要对参数进行元组才能使其工作。谢谢。
    • fn 的早期示例并没有说明您可以像上面那样对参数进行模式匹配。几乎所有的格式都是a = fn(arg1, argn) end
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2012-02-24
    • 1970-01-01
    相关资源
    最近更新 更多