2016-03-02 49 views
0

我試圖在case中使用「_」,但我錯過了一些東西。 我在做什麼是:Erlang:變量'_'是未綁定的

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 

我該怎麼辦呢?日Thnx。

回答

2

的問題是:

你不能對「=」

你只能把它的「=」

例如從右向左使用「_」

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

{x,y} = {_,4}(錯誤)

+0

好了,有什麼事的意思是 「不管」 我可以用它? 像:包= {xmlel,<<"message">> [{<<"to">>,<< 「[email protected]」 >>},{<<"type">>,<<"chat">>}],[]} 我想要的東西的意思是一切Erlang Like Packet == #xmlel {name = <<"message">>,attrs = [WhatEever,{<<"type">>,<<"chat">>}] children = WhatEever}) –

+0

我不完全明白這一點。 '_'表示匹配一切。 _ = 1和_ = 2將始終通過。然而a = 1和a = 2會崩潰。 – Xin

+0

我想我明白你的意思。基本上,這不是正確的方法,Erlang不支持你。 Pattern = Expression會檢查並匹配你,你不能在=的右邊放置未知的東西。這不是Erlang的設計 – Xin