【问题标题】:Erlang : variable '_' is unboundErlang:变量'_'未绑定
【发布时间】:2016-06-14 17:39:03
【问题描述】:

我正在尝试在案例中使用“_”,但我遗漏了一些东西。 我正在做的是:

case (Packet =:= #xmlel{name = <<"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

我该怎么做?谢谢。

【问题讨论】:

    标签: erl


    【解决方案1】:

    问题是:

    你不能在'='右边使用'_'

    只能放在'='的左边

    例如

    {_,4} = {x,y}(正确)

    {x,y} = {_,4}(错误)

    【讨论】:

    • 好的,我可以使用它吗?比如:Packet = {xmlel, >, [{>,>},{>,>}], []} 我想要一些在 Erlang 中意味着一切的东西 Like Packet == #xmlel{name = >, 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 结束
    猜你喜欢
    • 2018-02-25
    • 2023-04-03
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2022-12-10
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多