我有一个变量:
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.
请注意,消息不是作为元组发送的,它与 Data =
谁能带领我朝着正确的方向前进?
谢谢,晚安!-B
更新
好的,现在我想我越来越暖和了,我必须匹配任何进来的东西。
所以如果我说
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.
我觉得我很接近,但不是 100%
-B