从ESP8266WebServer的文档开始https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer,它显示了server.on这样的语法
server.on("/", handlerFunction);
我不知道这行在做什么。
server.on ( "/admin.html", []() { Serial.println("admin.html"); server.send ( 200, "text/html", PAGE_AdminMainPage ); } );
我特别不了解[]()
是什么。剩下的我明白了。
答案 0 :(得分:1)
这就是所谓的“ lambda表达式”。 C ++和许多其他语言都支持(C不支持)。
Lambda表达式用于允许语言操纵函数。在这种情况下,lambda表达式使您可以使用“匿名函数”,以便可以将处理程序传递给server.on()
,而不必事先将其声明为具有名称的函数。
通过[]
部分,您可以指定“捕获”-可以用于lambda函数的变量。 ()
部分是声明函数时将具有的函数参数的常规列表。 {}
部分当然是函数的代码。
在这种情况下,没有捕获,也没有参数,所以[]() { code... }
。
您可以在https://en.cppreference.com/w/cpp/language/lambda#Syntax
上阅读有关C ++ lambda表达式的更多信息。