Erlang:变量'_'未绑定
Posted
技术标签:
【中文标题】Erlang:变量\'_\'未绑定【英文标题】:Erlang : variable '_' is unboundErlang:变量'_'未绑定 【发布时间】:2016-06-14 17:39:03 【问题描述】:我正在尝试在案例中使用“_”,但我遗漏了一些东西。 我正在做的是:
case (Packet =:= #xmlelname = <<"message">>, attrs = [_, <<"type">>,<<"chat">>], children = _) of
true ->
?INFO_MSG("True ###### Packet ~p", [Packet]);
_ ->
?INFO_MSG("False ###### Packet ~p", [Packet])
end,
错误是:变量“_”未绑定。
我希望这个变量“_”在这个函数中代表所有的东西。
喜欢 -->
attrs = [Whatever, <<"type">>,<<"chat">>]
children = Whatever
我该怎么做?谢谢。
【问题讨论】:
【参考方案1】:问题是:
你不能在'='右边使用'_'
只能放在'='的左边
例如
_,4 = x,y
(正确)
x,y = _,4
(错误)
【讨论】:
好的,我可以使用它吗?比如:Packet = xmlel, >, [>,>,>,>], [] 我想要一些在 Erlang 中意味着一切的东西 Like Packet == #xmlelname = >, attrs = [WhatEever, >,>], 孩子 = WhatEever) 我不完全理解。 '_' 表示匹配所有内容。 _=1 和 _=2 将始终通过。但是 a = 1 和 a = 2 会崩溃。 我想我明白你的意思了。基本上,这不是正确的方法,Erlang 不支持你。 Pattern=Expression 会为你检查和匹配,你不能把未知的东西放在 = 的右边。这不是 Erlang 的设计 谢谢。我能知道某些文本是否算作:te = "hi how are you today."如果 te == "hi" -> Pattern1 的 case 表达式 -> XXOO;模式2-> OOXX; _ -> XXXX 结束,如果 X XX; X>10 -> OO; true -> XXOO 结束以上是关于Erlang:变量'_'未绑定的主要内容,如果未能解决你的问题,请参考以下文章