【发布时间】:2019-06-25 19:53:40
【问题描述】:
我有这个值
%{is_public: true, discoverable: true}
这可以是任何不具体的 is_public 和 discoverable,但所有将出现在 Map 之上的 keys 将在相机的 struct 中可用。
%Camera{
__meta__: #Ecto.Schema.Metadata<:loaded, "cameras">,
created_at: #DateTime<2017-08-25 14:13:55.524563Z>,
discoverable: true,
exid: "everc-fhlcr",
id: 12769,
is_online: true,
is_online_email_owner_notification: false,
is_public: true,
last_online_at: #DateTime<2019-05-14 11:10:45.000000Z>,
last_polled_at: #DateTime<2019-05-14 11:10:47.000000Z>,
}
我想在Map的基础上从Camera结构中获取值,即
iex(4)> changes = %{is_public: true, discoverable: true} |> Map.keys
[:discoverable, :is_public]
我可以使用Map.keys从更改映射中获取密钥
但我不确定如何从 Camera 结构映射值。
从上面的Camera Struct和更改地图,我想得到这种类型的地图。
%{
is_public: true,
discoverable: true
}
看起来和上面的地图一样,但它取决于 Camera Struct 的值,它们都可以是 false 或 true ,与 id、exid、is_online 相同。
如果我这样做
Enum.map(changed_keys, fn(key) ->
key: Map.get(camera, key)
end)
这仍然不起作用,任何帮助都会很明显。谢谢
我只想用changes Map 中的匿名键创建一个映射,然后从Camera Struct 中获取它们的值,并使用这些值和匿名键创建一个新映射。
【问题讨论】:
标签: elixir