繁体   English   中英

函数中的C ++代码作为参数

[英]C++ Code in function as argument

我有这个代码:

void longitudeChanged() {
  Serial.println("Longitude: " + String(GpsLon.value,8));
}

在主要:

  GpsLon.onUpdate(longitudeChanged);

我想做这样的事情:

GpsLon.onUpdate({
  Serial.println("Longitude: " + String(GpsLon.value,8));
});

(就像我在Java脚本中做的那样!); 但这不是严格的方式。 怎么做?

TNX

埃里克

看哪,强大的lambda!

#include <iostream>

template <typename T>
void myFunction(T t) {
    t();
}

int main() {
    myFunction([](){ std::cout << "Hi!" << std::endl; });
}

如果您想了解更多有关它们的信息,请查看此处

要稍微解密一下,这里有一个细分:

  • 你有一个函数通过模板参数获取另一个函数。
  • 除了调用它的参数之外,该函数什么都不做。
  • 在main中,您可以使用lambda作为参数调用该函数。
  • lambda可以分为三个部分[] (捕获,现在不要太担心) ()函数参数,在这种情况下没有)和{ ... } (正文,就像任何其他功能)。

所以lambda部分就是这样的:

[](){ std::cout << "Hi!" << std::endl; }

这是一个lambda的另一个例子,它接受一个int并返回其值的两倍:

[](int value){ return value * 2; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM