2014-10-04 20 views

Odpowiedz

2

Najpierw trzeba mieć świadomość, że Elixir obsługuje 2 rodzaje słownik

  • Erlangs rodzimy typ mapy (na mapach z tylko ograniczona liczba elementów)
    map = %{}
  • Eliksiry własnego słownika typu (słowniki z potencjalnie duże ładowność)
    dict = HashDict.new

Oba typy muszą być jednak sprawdzane Erlangs native :erlang.is_map.

def some_fun(arg) when :erlang.is_map(arg) do 
    #do your thing 
end 

Więcej informacji można znaleźć w sekcjach 7.2 i 7.3 (http://elixir-lang.org/getting_started/7.html)

+1

HashDict powróci wierny: erlang.is_map/1 tylko dlatego, że jest to struktura. Otrzymasz prawdę na przykład, jeśli uruchomisz: erlang.is_map (% URI {}). URI jest również strukturą, ale zwróci true. Jeśli chcesz sprawdzić, czy jest to HashDict należy wzór mecz na nim coś takiego: def some_fun (arg =% HashDict {}), wykonaj: ... Można zobaczyć więcej tutaj: https: //github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/hash_dict.ex#L40 – Eduardo

+0

Dzięki za wyjaśnienie – robkuz