Zum Beispiel, ich habe eine StrukturWas ist eine gute Lösung, um Nil-Wert in einer Struktur für Elixir fallen zu lassen?
post = %Post{title: "Title", desc: nil}
Und ich will, ist
%{title: "Title"}
Meine Lösung erhalten, wie
post
|> Map.delete(:__struct__) # change the struct to a Map
|> Enum.filter(fn {_, v} -> v end)
|> Enum.into(%{})
Es funktioniert, aber ist es eine bessere?
aktualisieren:
Ich fühle es ärgerlich transformierende von Struct auf der Karte, dann Enum, dann wieder auf Karte. Gibt es einen prägnanten Weg?
nicht ganz klar, was Sie fragen - besser, wie? Eine Sache, die ich ändern würde, ist 'Map.from_struct' anstelle von' Map.delete (...) ' –
Danke, ich fühle mich nervig von Struct in Map umwandeln, dann Enum, dann Map. Gibt es einen prägnanten Weg? –
@Tony Ihre Lösung ist in Ordnung Ich denke, aber es hat einen Fehler: Es wird auch Einträge mit dem Wert "false" verwerfen. Sie müssen die Filterung in 'Enum.filter (fn {_, v} -> v! = Nil end)' oder 'Enum.reject (fn {_, v} -> v == nil end) ändern' –