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:变量'_'未绑定的主要内容,如果未能解决你的问题,请参考以下文章

Erlang 记录与映射组

Erlang 模块向 shell 程序发送和接收消息

Erlang 不会警告未使用的函数参数

数独_erlang解题代码

如何从 Erlang 的列表或字符串中删除字符?

Windows 安装rabbitmq