, bir yapıElixir için bir yapıda nil değerini bırakmak için iyi bir çözüm nedir? Örneğin
post = %Post{title: "Title", desc: nil}
var Ve ben
%{title: "Title"}
Çözümümün almak istiyorum
post
|> Map.delete(:__struct__) # change the struct to a Map
|> Enum.filter(fn {_, v} -> v end)
|> Enum.into(%{})
Çalışıyor gibi ama daha iyi bir tane var?
Güncelleme:
Ben can sıkıcı dönüştürme Struct sonra Numaralandırma, sonra tekrar Map, Map ila hissediyorum. Özlü bir yolu var mı? Bunun yerine
post
|> Map.delete(:__struct__) # change the struct to a Map
|> Enum.filter(fn {_, v} -> v end)
|> Enum.into(%{})
yapmanın
Değil - nasıl daha iyi? Değiştireceğim bir şey, "Map.delete (...)" Map.delete (...) " –
yerine" Map.from_struct "kullanıyor. Teşekkürler, Yapımdan Haritaya, sonra Enum'a, sonra Harita'ya dönüşümü rahatsız ediyor. Özlü bir yolu var mı? –
@Tony çözümünüzün tamam olduğunu düşünüyorum, ama bir kusuru vardır: Ayrıca, değerin "yanlış" olduğu girdileri de atar. Filtrelemeyi "Enum.filter (fn {_, v} -> v! = Nil end) veya" Enum.reject (fn {_, v} -> v == nil son) " –