2015-06-23 8 views
5

Diciamo che ho un map con alcuni dati utente:valori di carico in una struttura da una mappa in Elixir

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

Come faccio a caricare questo in un %User{} struct (si spera con qualche Rubyish elisir magico) ?


Al momento ho provato questi, ma tutti hanno fallito. Passando attraverso la sezione Structs sul sito web Elixir.

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

risposta

7

Trovato la risposta sulla mailing list elixir-lang-talk. Possiamo usare il metodo struct/2:

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

altro modo, come detto da Dogbert, è quello di utilizzare Map.merge/2:

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

ritengo il primo metodo dovrebbe essere preferito, Map.merge non supporta chiavi applicate. – RusinaRange

Problemi correlati