使用Erlang的范围内,我有以下表现:二郎 - 搜索元组的元组
{add,{var,a},{mul,{num,2},{var,b}}}
,我使用清单:KEYMEMBER看到字母b是表达这样内:
lists:keymember(b,2,[expr])
但是,它并不在第三个元组'{mul,{num,2},{var,b}'中,因为它是一个单独的元组。有没有一个函数可以搜索整个元组,并且元组内?
谢谢
使用Erlang的范围内,我有以下表现:二郎 - 搜索元组的元组
{add,{var,a},{mul,{num,2},{var,b}}}
,我使用清单:KEYMEMBER看到字母b是表达这样内:
lists:keymember(b,2,[expr])
但是,它并不在第三个元组'{mul,{num,2},{var,b}'中,因为它是一个单独的元组。有没有一个函数可以搜索整个元组,并且元组内?
谢谢
据我所知,没有这样的功能。可能您将不得不使用递归实现一些自定义解决方案。这是我的例子:
-module(test).
-compile(export_all).
find(_, []) -> false;
find(E, T) when is_tuple(T) ->
find(E, tuple_to_list(T));
find(E, [H|T]) ->
case find(E, H) of
false -> find(E, T);
true -> true
end;
find(V, E) -> V == E.
与用法:
1> test:find(b, {add,{var,a},{mul,{num,2},{var,b}}}).
true
2> test:find(b, {add,{var,a},{mul,{num,2},{var,c}}}).
false
你就不能使用'名单:任何/ 2',而不是你自己的'找到/ 2'?另外,正如@ Fenollp所说,问题是关于一个元组 - 我不认为'|'在元组上工作。 – ZeissS
谢谢,最后我还是去了这样的事情! – DJDMorrison