我有这段代码:
void longitudeChanged() {
Serial.println("Longitude: " + String(GpsLon.value,8));
}
在main中:
GpsLon.onUpdate(longitudeChanged);
我想做这样的事情:
GpsLon.onUpdate({
Serial.println("Longitude: " + String(GpsLon.value,8));
});
(就像我在Java脚本中做的那样!); 但这不是严格的方式。怎么做?
TNX
埃里克
答案 0 :(得分:8)
看哪,强大的lambda!
#include <iostream>
template <typename T>
void myFunction(T t) {
t();
}
int main() {
myFunction([](){ std::cout << "Hi!" << std::endl; });
}
If you'd like to learn more about them, take a look here
稍微解密一下,这里有一个细分:
[]
(捕获,现在不要过于担心)()
函数参数,在这种情况下没有)和{ ... }
(身体,就像任何其他功能一样)。所以lambda部分就是这样:
[](){ std::cout << "Hi!" << std::endl; }
这是一个lambda的另一个例子,它接受一个int并返回其值的两倍:
[](int value){ return value * 2; }