是否可以在现有结构中设置值?我在谈论将现有结构传递给函数并设置结构"名称"值(例如)的想法?
我有什么:main.exs
Code.require_file("user.exs") # Requiring in module
person1 = User.constructor("Name") # Making a new user
IO.write inspect person1
Run Code Online (Sandbox Code Playgroud)
user.exs
defmodule User do
defstruct [name: ""]
def constructor(name) do
%User{name: name}
end
end
Run Code Online (Sandbox Code Playgroud)
有什么办法让这个想法有效吗?
def setName(struct, newName) do
struct.name = newName
end
Run Code Online (Sandbox Code Playgroud)
谢谢
Chr*_*nzo 16
绝对.有几种方法可以实现.
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
Run Code Online (Sandbox Code Playgroud)