5
Chcę sprawdzić, czy typ parametru podanego funkcji w eliksir jest słownikiem. Jak mam to zrobic?Jak sprawdzić typ słownika w eliksiru
Chcę sprawdzić, czy typ parametru podanego funkcji w eliksir jest słownikiem. Jak mam to zrobic?Jak sprawdzić typ słownika w eliksiru
Najpierw trzeba mieć świadomość, że Elixir obsługuje 2 rodzaje słownik
map = %{}
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)
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
Dzięki za wyjaśnienie – robkuz