Erlang - 并行消息没有正确搜索

时间:2010-10-13 22:52:03

标签: erlang parallel-processing

我有一个小问题,我找不到简单的答案。

我设置:

Who = apple.

Message = [{apple, {0,0,0}}, {orange, {1,1,1}}].

Old = [X || {Who, X} <- Message].

Old returns as [{0,0,0},{1,1,1}]

当然我的预期回复是{0,0,0}

相反,我得到苹果和橙色。

我该怎么办?

2 个答案:

答案 0 :(得分:5)

这实际上与我在Why Erlang variable is unused?给出答案的问题相同。基本上是因为理解中的所有模式变量都是新的变量,所以如果你想测试它们,你需要明确地做。它与在乐队头部发生的变量相同。

答案 1 :(得分:4)

有趣的问题,我真的很喜欢那个!看起来像Erlang的范围规则有点奇怪(或者至少我不习惯它,因为我不经常使用Erlang)......但以下似乎有效:

[Old|_] = [X || {W, X} <- Message, W =:= Who].