lua trig(pin,"down",pin1cb) 问题

作为 Lua 的新手,我不太理解文档中关于 trig 的例子。https://nodemcu.readthedocs.io/en/master/en/modules/gpio/#gpiotrig

  1. 在 "trig(pin, "down", pin1cb)" 中,pin1cb 没有参数,而在 pin1cb 函数中有 "level" 参数。为什么? "level" 又是什么?

  2. 在 "trig(pin, level == gpio.HIGH and "down" or "up")" 中,level 的值是什么?它在哪里被设置的?

点赞
用户805875
用户805875

gpio.trig(pin, [type [, callback_function]])callback_function(level)意味着callback_function应该是一个带有一个值作为参数的函数(在描述和示例中,参数名为'level')。

因此,

gpio.trig( 5, "both", function( v ) --[[callback code here]]  end )

应该是一个有效的调用(我将参数命名为'v'而不是'level' - 您可以选择任何名称)。

有了这个,(1)应该更清楚:function pin1cb( level ) … end定义了一个带有一个参数的函数,而在trig(pin, "down", pin1cb)中,这个函数被传递给了trig(函数独立于名称存在,可以传递它们,将它们分配给本地或全局变量,…因此,在这里,实际函数 - 不是调用它的结果或类似的东西 - 作为参数传递。)

并且(2):“level”是在调用pin1cb时作为参数传递的任何内容。根据文档,“回调传递的中断处指定引脚的电平。”

2017-01-30 04:55:14