私は変数を持っています:
Data = [[<<>>,
[<<"10">>,<<"171">>],
[<<"112">>,<<"Gen20267">>],
[<<"52">>,<<"20100812-06:32:30.687">>]]
2つの特定のケースでパターンマッチングを試みています。
外側の構造に似たものがどこにあるか-単純に[]内側に何かが入っている私は試し[ _ ]
ましたが、行きませんか?
次に、<<"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