2015-06-23 5 views
5

Lassen Sie uns sagen, dass ich ein map mit einigen Benutzerdaten haben:Belastungswerte in eine Struct aus einer Karte in Elixir

iex(1)> user_map 
#=> %{name: "Some User", email: "[email protected]", password: "*********"} 

Wie kann ich dies in eine %User{} Struktur laden (hoffentlich einige Rubyish Elixir Magie) ?


Ich habe derzeit versucht, aber alle von ihnen gescheitert. Gehen Sie durch die Structs Abschnitt auf Elixir Website.

user_struct = %{ %User{} | user_map } 
user_struct = %{ %User{} | Enum.to_list(user_map) } 

Antwort

7

Gefunden die Antwort auf die elixir-lang-talk Mailing-Liste. Wir können die struct/2 Methode verwenden:

struct(User, user_map) 
#=> %User{name: "Some User", email: "[email protected]", password: "*********"} 

Ein anderer Weg, wie Dogbert erwähnt, ist Map.merge/2 zu verwenden:

Map.merge(%User{}, user_map) 
#=> %User{name: "Some User", email: "[email protected]", password: "*********"} 
+0

denke ich, das erste Verfahren bevorzugt werden soll, kann Map.merge nicht umgehen erzwungene Schlüssel. – RusinaRange

Verwandte Themen