State#state.conn这个什么意思
时间: 2024-01-16 20:02:23 浏览: 134
在Erlang中,`#state{}`是一种记录(record)类型的语法,用于定义一个包含多个字段的数据结构。在上述代码中,`#state{conn = Conn}`定义了一个名为`state`的记录类型,其中包含一个名为`conn`的字段,表示Redis连接对象。
`State#state.conn`是用于访问`State`中的`conn`字段,即Redis连接对象的语法。在这里,`State`是一个记录对象,是通过`start/0`函数创建的应用状态。`#state{}`记录类型定义了`state`字段,因此我们可以使用`State#state.conn`来访问该字段的值,即Redis连接对象。
具体来说,`State#state.conn`表示从`State`记录对象中获取`conn`字段的值,即Redis连接对象。这里的`#state{}`是记录类型定义中的语法,用于指定`state`字段的类型和名称。`conn`表示`state`记录类型中的一个字段名称,它的类型是`eredis_conn:conn()`,即Redis连接类型。
相关问题
#state{conn = Conn}这是什么意思
在Erlang中,`#state{}`是一种记录(record)类型的语法。它用于定义一个包含多个字段的数据结构,每个字段都有一个名称和一个值,可以通过名称来访问该值。
在上述代码中,`#state{}`定义了一个名为`state`的记录类型,其中包含一个名为`conn`的字段。`conn`字段表示Redis连接对象,类型为`eredis_conn:conn()`,即eredis库中定义的Redis连接类型。
`#state{conn = Conn}`是在定义`state`记录类型的基础上,创建一个新的记录对象。该记录对象中的`conn`字段被赋值为`Conn`,即Redis连接对象。这样,我们就可以通过`state#state.conn`来访问该连接对象。
总之,`#state{conn = Conn}`是一种Erlang中定义记录类型和记录对象的语法,用于方便地创建和访问复杂的数据结构。
void ble_conn_handler(uint8_t conn_id, T_GAP_CONN_STATE new_state, uint16_t disc_cause) { struct ble_gap_event event; memset(&event, 0, sizeof(event)); switch (new_state) { case GAP_CONN_STATE_CONNECTED: { DBG_DIRECT("BLE connected, conn_id:%d\n", conn_id); event.type = BLE_GAP_EVENT_CONNECT; event.connect.conn_handle = conn_id; notify_ble_event_to_listeners(&event); } break; case GAP_CONN_STATE_DISCONNECTED: { DBG_DIRECT("BLE disconnected, conn_id:%d, reason:0x%02x\n", conn_id, (uint8_t)disc_cause); event.type = BLE_GAP_EVENT_DISCONNECT; event.disconnect.reason = (uint8_t)disc_cause; event.disconnect.conn.conn_handle = conn_id; notify_ble_event_to_listeners(&event); } break; default: break; } }
这段代码是关于蓝牙连接状态的处理函数,当蓝牙连接状态发生改变时,会调用这个函数。其中,参数conn_id表示连接句柄,new_state表示新的连接状态,disc_cause表示断开原因。函数中使用了一个结构体ble_gap_event来记录蓝牙连接状态的事件,当连接状态为GAP_CONN_STATE_CONNECTED时,将事件类型设为BLE_GAP_EVENT_CONNECT,并记录连接句柄,然后调用notify_ble_event_to_listeners函数通知监听者;当连接状态为GAP_CONN_STATE_DISCONNECTED时,将事件类型设为BLE_GAP_EVENT_DISCONNECT,并记录断开原因和连接句柄,然后同样调用notify_ble_event_to_listeners函数通知监听者。
阅读全文