是否可以在现有结构中设置值? 我在谈论将现有结构传递给函数并设置结构的想法" 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
由于
答案 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