这段代码中的符号是什么意思? []()[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

从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 );   }  );

我特别不明白[]()是什么。其余的我得到了。

c++ arduino esp8266 arduino-esp8266
1个回答
1
投票

这就是众所周知的“lambda表达”。这是C ++和许多其他语言支持的东西(C不支持)。

Lambda表达式用于允许语言操作函数。在这种情况下,lambda表达式允许您使用“匿名函数”,以便您可以将处理程序传递给server.on(),而不必将其声明为具有名称的函数。

[]部分允许您指定“捕获” - lambda函数可用的变量。 ()部分是您声明函数时的常规函数​​参数列表。而{}部分当然是函数的代码。

在这种情况下,没有捕获,没有参数,所以[]() { code... }

您可以在https://en.cppreference.com/w/cpp/language/lambda#Syntax上阅读有关C ++ lambda表达式的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.