在Elixir中设置现有的struct值?

时间:2016-01-27 14:32:11

标签: elixir

是否可以在现有结构中设置值? 我在谈论将现有结构传递给函数并设置结构的想法" name"值(例如)?

我有什么: main.exs

Code.require_file("user.exs") # Requiring in module

person1 = User.constructor("Name") # Making a new user

IO.write inspect person1

user.exs

defmodule User do
    defstruct [name: ""]

    def constructor(name) do
        %User{name: name}
    end
end

有什么方法可以让这个想法发挥作用吗?

def setName(struct, newName) do
    struct.name = newName
end

由于

1 个答案:

答案 0 :(得分:13)

绝对。有几种方法可以实现。

defmodule User do
  defstruct name: nil

  # Method 1
  def set_name(user, name) do
    %{user | name: name}
  end

  # Method 2
  def set_name(user, name) do
    user |> struct(%{name: name})
  end

  # Method 3
  def set_name(user, name) do
    user |> Map.put(:name, name)
  end
end
相关问题