我有一个变量:二郎山 - 模式匹配
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