У меня есть переменная:
Data = [[<<>>,
[<<"10">>,<<"171">>],
[<<"112">>,<<"Gen20267">>],
[<<"52">>,<<"20100812-06:32:30.687">>]]
Я пытаюсь найти совпадение по образцу для двух конкретных случаев.
Тот, где все, что напоминает внешнюю структуру - просто [] Что-нибудь внутри идет. Я пробовал [ _ ]
, но не вышло?
Во-вторых, для особого рисунка внутри, например, когда я вижу «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