在元组中带有搜索文本条件的 if 语句
if statement with a search text condition in a tuple
我需要在 erlang 中编写一个 if 语句,条件是在我收到的元组中搜索此测试 "tele/folin-house-s1/SENSOR"。
下面我插入我收到的元组:
{message,<<0,5,128,208,182,250,162,9,244,64,0,0,105,198,0,0>>,
1,<<"DVES_0DBFDB">>,
#{dup => false,retain => true},
#{username => undefined},
<<"tele/folin-house-s1/LWT">>,<<"Offline">>,
{1549,8794,985040}}.
{message,<<0,5,128,208,182,250,162,9,244,64,0,0,105,198,0,0>>,
1,<<"DVES_0DBFDB">>,
#{dup => false,retain => true},
#{username => undefined},
<<"tele/folin-house-s1/LWT">>,<<"Offline">>,
{1549,8794,985040}}.
{message,undefined,0,<<"733f0bfd-0741-4e55-bd14-ba10a156165f1549007325254">>,
#{dup => false,retain => false},
#{username => undefined},
<<"tele/folin-house-s1/SENSOR">>,
<<"{\"Time\":\"2018-12-18T22:37:00\",\"BME680\":{\"Temperature\":21.3,\"Humidity\":38.1,\"Pressure\":1021.4,\"Gas\":308.19},\"TempUnit\":\"C\"}">>,
{1549,8796,895335}}.
{message,undefined,0,<<"733f0bfd-0741-4e55-bd14-ba10a156165f1549007325254">>,
#{dup => false,retain => false},
#{username => undefined},
<<"tele/folin-house-s1/SENSOR">>,
<<"{\"Time\":\"2018-12-18T22:37:00\",\"BME680\":{\"Temperature\":21.3,\"Humidity\":38.1,\"Pressure\":1021.4,\"Gas\":308.19},\"TempUnit\":\"C\"}">>,
{1549,8803,302986}}.
我想用 if 语句过滤像这样的元组:
{message,undefined,0,<<"733f0bfd-0741-4e55-bd14-ba10a156165f1549007325254">>,
#{dup => false,retain => false},
#{username => undefined},
<<"tele/folin-house-s1/SENSOR">>,
<<"{\"Time\":\"2018-12-18T22:37:00\",\"BME680\":{\"Temperature\":21.3,\"Humidity\":38.1,\"Pressure\":1021.4,\"Gas\":308.19},\"TempUnit\":\"C\"}">>,
{1549,8803,302986}}.
包含 "tele/folin-house-s1/SENSOR"。我不懂erlang编码。
使用 case 子句可能会更好
在这种情况下,您需要通过函数传递接收到的元组
这里是函数示例:
message({message,_, _,_, _, _, <<"tele/folin-house-s1/LWT">>,_, _}) ->
do_something();
message(_Tuple) -> skip.
这里是带有 'case' 语句的示例:
message({message,_, _,_, _, _, Condition,_, _}) ->
case Condition of
<<"tele/folin-house-s1/LWT">> -> do_something();
_Any -> skip
end.
这里是带有 'if' 语句的示例:
message({message,_, _,_, _, _, Condition,_, _}) ->
if
Condition =:= <<"tele/folin-house-s1/LWT">> ->
do_something();
true ->
skip
end.
我需要在 erlang 中编写一个 if 语句,条件是在我收到的元组中搜索此测试 "tele/folin-house-s1/SENSOR"。 下面我插入我收到的元组:
{message,<<0,5,128,208,182,250,162,9,244,64,0,0,105,198,0,0>>,
1,<<"DVES_0DBFDB">>,
#{dup => false,retain => true},
#{username => undefined},
<<"tele/folin-house-s1/LWT">>,<<"Offline">>,
{1549,8794,985040}}.
{message,<<0,5,128,208,182,250,162,9,244,64,0,0,105,198,0,0>>,
1,<<"DVES_0DBFDB">>,
#{dup => false,retain => true},
#{username => undefined},
<<"tele/folin-house-s1/LWT">>,<<"Offline">>,
{1549,8794,985040}}.
{message,undefined,0,<<"733f0bfd-0741-4e55-bd14-ba10a156165f1549007325254">>,
#{dup => false,retain => false},
#{username => undefined},
<<"tele/folin-house-s1/SENSOR">>,
<<"{\"Time\":\"2018-12-18T22:37:00\",\"BME680\":{\"Temperature\":21.3,\"Humidity\":38.1,\"Pressure\":1021.4,\"Gas\":308.19},\"TempUnit\":\"C\"}">>,
{1549,8796,895335}}.
{message,undefined,0,<<"733f0bfd-0741-4e55-bd14-ba10a156165f1549007325254">>,
#{dup => false,retain => false},
#{username => undefined},
<<"tele/folin-house-s1/SENSOR">>,
<<"{\"Time\":\"2018-12-18T22:37:00\",\"BME680\":{\"Temperature\":21.3,\"Humidity\":38.1,\"Pressure\":1021.4,\"Gas\":308.19},\"TempUnit\":\"C\"}">>,
{1549,8803,302986}}.
我想用 if 语句过滤像这样的元组:
{message,undefined,0,<<"733f0bfd-0741-4e55-bd14-ba10a156165f1549007325254">>,
#{dup => false,retain => false},
#{username => undefined},
<<"tele/folin-house-s1/SENSOR">>,
<<"{\"Time\":\"2018-12-18T22:37:00\",\"BME680\":{\"Temperature\":21.3,\"Humidity\":38.1,\"Pressure\":1021.4,\"Gas\":308.19},\"TempUnit\":\"C\"}">>,
{1549,8803,302986}}.
包含 "tele/folin-house-s1/SENSOR"。我不懂erlang编码。
使用 case 子句可能会更好
在这种情况下,您需要通过函数传递接收到的元组
这里是函数示例:
message({message,_, _,_, _, _, <<"tele/folin-house-s1/LWT">>,_, _}) ->
do_something();
message(_Tuple) -> skip.
这里是带有 'case' 语句的示例:
message({message,_, _,_, _, _, Condition,_, _}) ->
case Condition of
<<"tele/folin-house-s1/LWT">> -> do_something();
_Any -> skip
end.
这里是带有 'if' 语句的示例:
message({message,_, _,_, _, _, Condition,_, _}) ->
if
Condition =:= <<"tele/folin-house-s1/LWT">> ->
do_something();
true ->
skip
end.