docs 状态

run(t, name, module, function, args) :: t when function: atom, args: [any]



但我不确定如何使用它。假设我有这个函数,我想在 Ecto.Multi 中运行:
def some_fun(value, other_value) do
  case value do
    nil -> {:error, other_value}
    _ -> {:ok, other_value}
  end
end

这将如何运作?

最佳答案

我假设您希望 value 是“到目前为止的更改”,而 other_value 是您在调用 Multi.run/5 时指定的值。在这种情况下,如果您的函数位于名为 Foo 的模块中:

defmodule Foo do
  def some_fun(value, other_value) do
    case value do
      nil -> {:error, other_value}
      _ -> {:ok, other_value}
    end
  end
end

那么你的 Multi.run/5 调用将是:
Multi.run(multi, name, Foo, :some_fun, [other_value])

这相当于以下 Multi.run/3 调用:
Multi.run(multi, name, fn value -> Foo.some_fun(value, other_value) end)

关于Elixir Ecto : Could someone give an example of Ecto. Multi.run/5,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40746936/

10-10 17:20