【发布时间】:2019-07-18 10:31:01
【问题描述】:
Elixir 提供了一些 is_ 函数,可让您检查项目是否为特定类型:
is_atomis_binaryis_map- 等
但是如何检查一个值是否是 Elixir 中的关键字列表? 我知道在下面,关键字列表是一个 2 元素元组的列表,其中第一个元素是一个原子,所以我的当前的解决方法是:
defmodule KList do
def is_keyword?(list) when is_list(list) do
Enum.all? list, fn item ->
case item do
{k, _} -> is_atom(k)
_ -> false
end
end
end
def is_keyword?(_), do: false
end
有没有更好的(或内置的)方法来做到这一点?更重要的是,我怎样才能在 when 子句中做到这一点?
【问题讨论】:
-
您将无法检查保护子句中的关键字列表。守卫中允许使用预定义的表达式列表。您可以编写的唯一扩展是扩展为那些允许的表达式的宏。 elixir-lang.org/docs/master/elixir/guards
标签: elixir