首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除Erlang中的orddict

如何删除Erlang中的orddict
EN

Stack Overflow用户
提问于 2019-10-26 21:46:54
回答 1查看 144关注 0票数 1

我希望能够删除Erlang中的多个键,也可以删除所有字典。

到目前为止,我已经尝试过:

代码语言:javascript
运行
复制
X=[{1,2},{3,4}].
Deleted=orddict:fold(fun({K,V})->orddict:erase(K,X) end ,[],X).

如何删除所有键?是否需要在fun -> erase方法中使用fun->erase方法中的外部变量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-27 07:29:53

当您在代码中尝试时,您不能在orddict中擦除键,但是您可以在没有键的情况下创建该键的副本。

如果您想删除所有的键,只需按@choroba所说的做,就创建一个新的orddict。

如果您想要删除多个但不是所有的键,有许多方法可以实现您想要的结果,我建议您使用函数采取的解决方案,从orddict库:

采取(键,Orddict) -> {Value,Orddict1}

[计]误差

Orddict = Orddict1 = orddict(Key,Value)

Key = Value = term()

此函数返回不带此值的字典和新字典中的值。如果字典中不存在键,则返回错误。

首先,您创建一个函数,该函数以键作为参数,将键作为Dict,然后返回不带键的dict (如果存在)。

代码语言:javascript
运行
复制
1> F = fun(X,Dict) ->  case orddict:take(X,Dict) of
1> {_,New} -> New;
1> error -> Dict
1> end
1> end.
#Fun<erl_eval.13.91303403>

编辑:我没有检查orddict库,您可以使用擦除函数将F替换为G = fun(X,Dict) -> orddict:erase(X,Dict) end.

然后,您可以将此函数与list:折叠/3一起使用,以“删除”列表中的所有键:

代码语言:javascript
运行
复制
2> O1 =orddict:from_list([{1,a},{2,b},{3,c},{4,d}]).
[{1,a},{2,b},{3,c},{4,d}]
3> O2 = lists:foldl(F,O1,[3,1]).
[{2,b},{4,d}]
4> O3 = lists:foldl(F,O1,[3,5]).
[{1,a},{2,b},{4,d}]
5> 
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58574984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档