【问题标题】:What does the double backslash mean in a function parameter in Elixir?Elixir 函数参数中的双反斜杠是什么意思?
【发布时间】:2016-04-06 10:56:56
【问题描述】:

我最近遇到了一个代码sn-p比如:

def loop(ring_pid \\ self, nil, true) do
  #some code 
end

双反斜杠是什么意思?我搜索了一下,发现http://elixir-lang.org/getting-started/sigils.html,但这适用于正则表达式而不是函数参数。

【问题讨论】:

    标签: elixir


    【解决方案1】:

    \\用于定义默认参数,source

    您可以通过在iex 控制台中尝试观察该行为,例如:

    defmodule Foo do
      def bar(x \\ 1, y) do
        x * y
      end
    end
    
    Foo.bar(2,3) # => 6
    Foo.bar(3) # => 3
    

    【讨论】:

      【解决方案2】:

      指定一个默认值

      在参数名称之后使用\\ 定义的函数参数提供了一个可选的默认值。因此,如果调用 loop/2,第一个参数将是从self() 返回的 pid。如果 loop/3 被调用,那么您将指定一个 pid。

      让我们再举一个(琐碎的)例子:

      ma​​th.ex

      defmodule Math do   
        def add(a \\ 2, b) do
          a + b   
        end 
      end
      
      iex (1)> c("math.ex")
      
      iex (2)> Math.add(1, 8) # add/2, because you are matching 1 to `a`.
      9
      
      iex (3)> Math.add(8) # add/1, because `a` is by default matched to 2.
      10
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-02
        • 2021-02-01
        • 2013-10-24
        • 2021-09-04
        • 2021-06-15
        • 2014-07-15
        • 2022-01-17
        相关资源
        最近更新 更多