gpt4 book ai didi

elixir - 检查一个值是否是一个关键字列表

转载 作者:行者123 更新时间:2023-12-04 03:25:56 25 4
gpt4 key购买 nike

Elixir 提供了一些 is_可让您检查项目是否为特定类型的函数:

  • is_atom
  • is_binary
  • is_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 中做到这一点?条款?

    最佳答案

    原来有一个内置的解决方案; Keyword模块导出 keyword?/1方法:

    Keyword.keyword?(term)

    Returns true if term is a keyword list; otherwise returns false


    示例:

    iex> Keyword.keyword?([])
    true
    iex> Keyword.keyword?([a: 1]
    true
    iex> Keyword.keyword?([{Foo, 1}])
    true
    iex> Keyword.keyword?([{}])
    false
    iex> Keyword.keyword?([:key])
    false
    iex> Keyword.keyword?(%{})
    false

    注:不像其他 is_内核中的导出, keyword?不是 宏——这意味着它不能用于守卫。

    关于elixir - 检查一个值是否是一个关键字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40207758/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com