【问题标题】:Read tuple key and value读取元组键和值
【发布时间】:2012-08-21 11:45:32
【问题描述】:

如何在 Erlang 中读取元组键和值?

我有这个变量:

Params = [<<"TPUIBrowser">>,0,18,
 {[{<<"End">>,<<"location-1ÿ">>},{<<"Start">>,<<"location-1">>}]},
 null]

我想获取&lt;&lt;"End"&gt;&gt;&lt;&lt;"Start"&gt;&gt; 的值。

我怎么能在 Erlang 中做到这一点?

我可以这样做:

[_,_,_,A,_] = Params.
{[{_,B},{_,C}]} = A.

但这感觉非常冗长且容易出错(即当我收到更多参数时)。最好的 erlang 方法是什么?

【问题讨论】:

    标签: erlang tuples data-retrieval


    【解决方案1】:

    lists 库中有用于此目的的函数。查看lists:keyfind:

    [_,_,_,{A},_] = Params,
    {Key, Value} = lists:keyfind(<<"End">>, 1, A).
    

    (我假设你知道Params 的哪个位置有A

    【讨论】:

    • 当我尝试这个时,我得到这个错误:{Key, Value} = lists:keyfind(>, 1, A)。 ** 异常错误:函数列表中的错误参数:keyfind/3 称为列表:keyfind(>,1, {[{>, >}, {>,>}]})
    • 哦,我错过了您的列表在单元素元组中。我已经确定了我的答案(这次真的试过了:-))
    【解决方案2】:

    您也可以使用records,如果您打算添加更多字段,这特别适合。

    由于您在这里使用列表{[{_,B},{_,C}]} = A. 我假设可能有更多元素;在这种情况下,创建一个递归函数来解包可能会更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 2013-07-17
      • 2023-02-24
      • 2021-10-22
      相关资源
      最近更新 更多