我有一个小问题,我找不到简单的答案。
我设置:
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}
相反,我得到苹果和橙色。
我该怎么办?
答案 0 :(得分:5)
这实际上与我在Why Erlang variable is unused?给出答案的问题相同。基本上是因为理解中的所有模式变量都是新的变量,所以如果你想测试它们,你需要明确地做。它与在乐队头部发生的变量相同。
答案 1 :(得分:4)
有趣的问题,我真的很喜欢那个!看起来像Erlang的范围规则有点奇怪(或者至少我不习惯它,因为我不经常使用Erlang)......但以下似乎有效:
[Old|_] = [X || {W, X} <- Message, W =:= Who].