我有一個小問題,我不能找到簡單的答案。Erlang - 並行消息找不到
我設置:
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}
相反,我得到兩個蘋果和橘子。
我該怎麼辦?
我有一個小問題,我不能找到簡單的答案。Erlang - 並行消息找不到
我設置:
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}
相反,我得到兩個蘋果和橘子。
我該怎麼辦?
有趣的問題,我真的很喜歡那個!看起來像二郎神的作用域規則有點奇怪(或至少我不使用它,因爲我不經常使用的Erlang)......但以下似乎工作:
[Old|_] = [X || {W, X} <- Message, W =:= Who].
在這種情況下,我更喜歡'=:='。 – 2010-10-14 08:40:41
在這種情況下有什麼關係?原子可以幾乎相等嗎?無論如何,我已經更新了它。 – tux21b 2010-10-14 08:54:15
這是實際上與我在Why Erlang variable is unused?中給出答案的問題相同。基本上,這是因爲理解中的所有模式變量都是新的,新的變量,所以如果你想測試它們,你需要明確地做它。它與發生在頭部的變量相同。
Erlang應該大寫爲「Erlang」,而不是「ERLANG」 – gleber 2010-10-14 05:14:25