5
Voglio verificare se il tipo di parametro assegnato a una funzione in elisir è un dizionario. Come faccio a fare questo?Come controllo un tipo di dizionario in elisir
Voglio verificare se il tipo di parametro assegnato a una funzione in elisir è un dizionario. Come faccio a fare questo?Come controllo un tipo di dizionario in elisir
In primo luogo si deve essere consapevoli che Elixir supporta 2 tipi dizionario
map = %{}
dict = HashDict.new
Entrambi i tipi tuttavia devono essere controllati con Erlangs nativo :erlang.is_map
.
def some_fun(arg) when :erlang.is_map(arg) do
#do your thing
end
Maggiori informazioni si possono trovare nelle sezioni 7.2 e 7,3 (http://elixir-lang.org/getting_started/7.html)
HashDict tornerà fedele a: erlang.is_map/1 solo perché è una struct. Ad esempio, se si esegue: si otterrà: erlang.is_map (% URI {}). Anche l'URI è una struttura, ma restituirà true. Se si desidera controllare se è un HashDict si dovrebbe pattern matching su di esso con qualcosa di simile: def some_fun (arg =% HashDict {}), fare: ... Si può vedere di più qui: https: //github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/hash_dict.ex#L40 – Eduardo
Grazie per il chiarimento – robkuz