use*_*502 26 struct dictionary elixir telegram-bot
我正在尝试将结构转换为地图,以便能够清除所有的nil值
我目前正在使用此代码
case Nadia.get_updates do
{:ok, results} ->
Map.from_struct(results)
|> Enum.filter(fn {_, v} -> v != nil end)
|> Enum.into(%{})
Run Code Online (Sandbox Code Playgroud)
注意:Nadia.get_updates返回以下结构:https://hexdocs.pm/nadia/Nadia.Model.Update.html#t:t / 0
然而,我总是收到以下错误:Map.from_struct/1中没有匹配的函数子句
Jul*_*ano 52
从v0.15开始,我们就是Map.from_struct/1这样做的.
defmodule User do
defstruct [:name]
end
Map.from_struct(%User{name: "valim"})
#=> %{name: "valim"}
Run Code Online (Sandbox Code Playgroud)
rad*_*erg 11
还有另一招
my_struct = %MyStruct{}
my_map = Map.delete my_struct, :__struct__
Run Code Online (Sandbox Code Playgroud)
get_updates([{atom, any}]) ::
{:ok, [Nadia.Model.Update.t]} |
{:error, Nadia.Model.Error.t}
Run Code Online (Sandbox Code Playgroud)
如果成功,它将返回 Nadia.Model.Update.t 列表。这就是您收到该错误的原因。