if message.topic == fire/testTopic: NameError: name 'message' is not defined. Did you mean: 'on message' ?
时间: 2024-05-19 11:13:25 浏览: 112
This error message suggests that the variable 'message' has not been defined in the current scope. It also suggests that there might be a typo in the code, and that the intended reference might be to a function called 'on_message'.
To fix this error, you should ensure that the variable 'message' is defined before it is used in the if statement. Additionally, if you intended to reference a function called 'on_message', you should update the code accordingly.
相关问题
Erlang中[{<<"testtopic/#">>, Opts} || {Topic, Opts} <- TopicFilters]这是给TopicFilters赋值,怎么得到TopicFileter中的Topic
这是一个Erlang中的列表推导式,它的作用是从TopicFilters这个列表中选取满足条件的元素,并将它们转化为一个新的列表。在这个例子中,被选取的元素是形如{Topic, Opts}的二元组,其中Topic是一个二进制字符串(binary string),表示一个MQTT主题的过滤器(filter)。对于每一个被选取的二元组,都会生成一个新的二元组{<<"testtopic/#">>, Opts},其中<<"testtopic/#">>是一个新的二进制字符串,表示一个特定的MQTT主题过滤器。因此,最终得到的结果就是一个新的二元组列表,其中每个二元组的第一个元素都是<<"testtopic/#">>,而第二个元素则是对应原列表中的Opts。如果你想要得到原列表中的Topic,可以使用列表推导式的另一种形式,即:[Topic || {Topic, _} <- TopicFilters]。
获取<<"testtopic/45sgdggfdfg">>
要获取<<"testtopic/45sgdggfdfg">>这个键,可以使用以下代码:
```
Map = #{<<"testtopic/45sgdggfdfg">> => #{nl => 0,qos => 0,rap => 0,rh => 0}},
Key = maps:keys(Map).
```
其中,第一行代码定义了一个Map变量,键为<<"testtopic/45sgdggfdfg">>,值为包含四个键值对的Map类型。第二行代码使用maps:keys函数获取Map中所有的键,即Key变量将会被赋值为[<<"testtopic/45sgdggfdfg">>]。
阅读全文