默认参数是第一个参数,而不是唯一一个。为什么这个有效?

问题描述 投票:0回答:1

在第三方项目中,在模型中我遇到过这样的函数:

  def changeset(model \\ %__MODULE__{}, params) do
      model
      |> cast(params, @required_fields ++ @optional_fields)
      |> validate_required(@required_fields)
  end

函数怎么可能有一个默认参数,即 both a) 首先,b) 后跟一个强制参数?

有趣的是,这些功能都可以正常工作。

elixir
1个回答
0
投票

elixir 中的默认参数只是语法糖,编译后 Elixir 会为你生成这些函数:

changeset(params)
changeset(model, params)

这与其他语言中的工作方式不同,我不鼓励滥用它,因为它往往会使代码不可读,特别是如果您有多个默认参数。

© www.soinside.com 2019 - 2024. All rights reserved.