如何在 Elixir 中检查字典类型

5

我想检查在Elixir中给函数的参数类型是否为字典。我该怎么做?

1个回答

2

首先,您需要知道Elixir支持两种字典类型:

  • Erlang本地Map类型(适用于仅有有限项的映射)
    map = %{}
  • Elixir自带的Dictionary类型(适用于携带大量负载的字典)
    dict = HashDict.new

但是,这两种类型都需要使用Erlang本机: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)。


1
HashDict只是一个结构体,所以它会返回true给:erlang.is_map/1。例如,如果您运行:erlang.is_map(%URI{}),您将获得true。URI也是一个结构体,但它会返回true。如果要检查它是否为HashDict,则应使用类似以下内容的模式匹配:def some_fun(arg = %HashDict{}), do: ...您可以在此处了解更多信息:https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/hash_dict.ex#L40 - Eduardo
感谢澄清。 - robkuz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接