我有一個變量:二郎山 - 模式匹配
Data = [[<<>>,
[<<"10">>,<<"171">>],
[<<"112">>,<<"Gen20267">>],
[<<"52">>,<<"20100812-06:32:30.687">>]]
我試圖模式匹配了兩個具體的案例..
一個地方的任何類似的外部結構 - 簡單的[] 裏面什麼去我試過[ _ ]
,但沒有去?
第二,對於特定的圖案的內部,當我看到< <「10」等>>或< <「112」 >>或< <「52」 >>然後我要採取右側這是一個原子的實際數據。 基本上< <「10」>>或< <「112」>>或< <「52」>>是字段,右邊是數據。
我曾嘗試之類的語句[<<"10">>, _ ]
仍然沒有去
這裏是代碼的其餘部分:
dataReceived(Message) ->
receive
{start} ->
ok;
[ _ ] -> %%No go
io:format("Reply 1 = ~p~n", [Message]);
[<<"10">>, _ ] -> %%No go
io:format("Reply 1 = ~p~n", [Message])
end.
作爲一個說明該消息不發送一個元組是完全一樣的數據=
任何人都可以帶領我走向正確的方向嗎?
謝謝,晚安! -B
UPDATE
好了,現在我覺得我逐漸回暖,我不得不模式匹配任何用武之地。
所以,如果我不得不說
Message = = [[<<>>],
[<<"10">>,<<"171">>],
[<<"112">>,<<"Gen20267">>],
[<<"52">>,<<"20100812-06:32:30.687">>]]
而且我尋找模式匹配的領域< <「112」>>
如112總是會說112,但Gen2067可以隨時更改..其數據,它將被存儲在一個變量中。
loop() ->
receive
[_,[<<"112">>, Data], _] when is_list(X) -> %% Match a list inside another.
?DEBUG("Got a list ~p~n", [X]),
loop();
_Other ->
?DEBUG("I don't understand ~p~n", [_Other]),
loop()
end.
我覺得IM接近,但不是100%
-B
@ user417896:我認爲你是混淆的論據和消息。看到我更新的答案。 – 2010-08-12 18:03:49