我最近遇到了一个代码片段,例如:
def loop(ring_pid \\ self, nil, true) do
#some code
end
双反斜杠是什么意思?我四处搜寻,发现http://elixir-lang.org/getting-started/sigils.html,但这适用于正则表达式而不是函数参数。
它指定一个默认值。
\\
在参数名称之后使用定义的函数参数提供了可选的默认值。因此,如果调用loop / 2,则第一个参数将是从返回的pid self()
。如果调用loop / 3,则需要指定一个pid。
让我们再举一个(琐碎的)例子:
数学
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句