【发布时间】: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
我最近遇到了一个代码sn-p比如:
def loop(ring_pid \\ self, nil, true) do
#some code
end
双反斜杠是什么意思?我搜索了一下,发现http://elixir-lang.org/getting-started/sigils.html,但这适用于正则表达式而不是函数参数。
【问题讨论】:
标签: elixir
\\用于定义默认参数,source
您可以通过在iex 控制台中尝试观察该行为,例如:
defmodule Foo do
def bar(x \\ 1, y) do
x * y
end
end
Foo.bar(2,3) # => 6
Foo.bar(3) # => 3
【讨论】:
它指定一个默认值。
在参数名称之后使用\\ 定义的函数参数提供了一个可选的默认值。因此,如果调用 loop/2,第一个参数将是从self() 返回的 pid。如果 loop/3 被调用,那么您将指定一个 pid。
让我们再举一个(琐碎的)例子:
math.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
【讨论】: