5
Я хочу проверить, является ли тип параметра, заданного функции в Elixir, Словарем. Как мне это сделать?Как проверить тип словаря в Elixir
Я хочу проверить, является ли тип параметра, заданного функции в Elixir, Словарем. Как мне это сделать?Как проверить тип словаря в Elixir
Во-первых, вы должны знать, что Эликсир поддерживает 2 типа словарь
map = %{}
dict = HashDict.new
Оба типа, однако, должна быть проверен с эрлангами родной :erlang.is_map
.
def some_fun(arg) when :erlang.is_map(arg) do
#do your thing
end
Более подробную информацию можно найти в разделах 7.2 и 7.3 (http://elixir-lang.org/getting_started/7.html)
HashDict вернется верным: erlang.is_map/1 просто потому, что это структура. Вы получите правду, например, если вы запустите: erlang.is_map (% URI {}). URI также является структурой, но возвращает true. Если вы хотите проверить, если это HashDict вы должны спичку узор на нем с чем-то вроде этого: Защиту some_fun (Arg =% HashDict {}), сделайте следующее: ... Вы можете увидеть здесь: https: //github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/hash_dict.ex#L40 – Eduardo
Спасибо за разъяснение – robkuz