使用Enum.map时在struct内设置值

mic*_*arz 1 elixir

让我们假设我有这样的结构:

results = %{page: page_numer, period: period, result: [%Entry{}, %Entry{}]}
Run Code Online (Sandbox Code Playgroud)

我想在result.result中的每个%Entry {}附加一些数据,就像它一样:

result.result
|> Enum.map(fn entry -> 
   entry.page = results[:page]
   entry.period = results[:period]
 end)
Run Code Online (Sandbox Code Playgroud)

可能吗?

Dog*_*ert 5

您可以使用Map更新语法(假设您在结构中有:page:period字段Entry):

new_result = result.result
|> Enum.map(fn entry ->
  %{entry | page: results[:page], period: results[:period]}
end)
Run Code Online (Sandbox Code Playgroud)