我最近遇到了一个代码段,例如:
def loop(ring_pid \\ self, nil, true) do
#some code
end
Run Code Online (Sandbox Code Playgroud)
双反斜杠是什么意思?我用Google搜索并找到http://elixir-lang.org/getting-started/sigils.html,但这适用于正常表达式而不是函数params.
ham*_*ich 29
它指定默认值.
\\在参数名称后使用定义的函数参数提供可选的默认值.因此,如果调用loop/2,则第一个参数将是从返回的pid self().如果调用了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
Run Code Online (Sandbox Code Playgroud)
ara*_*nku 20
\\用于定义默认参数,源
您可以通过在iex控制台中尝试来观察该行为,例如:
defmodule Foo do
def bar(x \\ 1, y) do
x * y
end
end
Foo.bar(2,3) # => 6
Foo.bar(3) # => 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3910 次 |
| 最近记录: |