1. ホーム
  2. elixir

Elixirで構造体をmap変数で初期化する方法

2023-08-08 23:01:51

質問

構造体を作成することが可能であることは知っています。 %User{ email: '[email protected]' } . しかし、もし私が変数 params = %{email: '[email protected]'} という変数があった場合、その変数を使用して構造体を作成する方法はありますか。 %User{ params } .

これはエラーが出ます。ただ、爆発させるか、他の方法があるのでしょうか?

どのように解決するのですか?

この場合 struct/2 関数を使用します。docsより。

defmodule User do
  defstruct name: "john"
end

struct(User)
#=> %User{name: "john"}

opts = [name: "meg"]
user = struct(User, opts)
#=> %User{name: "meg"}

struct(user, unknown: "value")
#=> %User{name: "meg"}