未显式传递参数时使用 lambda 默认为用户输入
Defaulting to user input using a lambda when parameter is not explicitly passed
我写了下面的代码(Still wondering about its uses...)如果参数不传默认为用户输入
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
unsigned getInput() {
unsigned input;
std::cin >> input;
return input;
}
void foo(unsigned number = getInput()) {
std::cout << number << "\n";
}
int main() {
foo(1); //prints 1
foo(); //defaults to user input
return 0;
}
我想问的是,有什么方法可以将 getInput()
函数转换为 lambda?
的内容
void foo(unsigned number = { []() {unsigned num = 0; std::cin >> num; return num; } }) {
std::cout << number << "\n";
}
此外,如何在 中实现类似的功能?
当然可以,但是您错过了对 lambda 的调用:
void foo(unsigned number = [] {
unsigned num = 0;
std::cin >> num;
return num;
}() // <- call here
)
{
std::cout << number << "\n";
}
是的,您可以使用 lambda。你需要做的是在你定义它之后调用 lambda
void foo(unsigned number = []() {unsigned num = 0; std::cin >> num; return num; }())
// ^ define lambda ^^^
// call lambda_____|
我写了下面的代码(Still wondering about its uses...)如果参数不传默认为用户输入
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
unsigned getInput() {
unsigned input;
std::cin >> input;
return input;
}
void foo(unsigned number = getInput()) {
std::cout << number << "\n";
}
int main() {
foo(1); //prints 1
foo(); //defaults to user input
return 0;
}
我想问的是,有什么方法可以将 getInput()
函数转换为 lambda?
void foo(unsigned number = { []() {unsigned num = 0; std::cin >> num; return num; } }) {
std::cout << number << "\n";
}
此外,如何在
当然可以,但是您错过了对 lambda 的调用:
void foo(unsigned number = [] {
unsigned num = 0;
std::cin >> num;
return num;
}() // <- call here
)
{
std::cout << number << "\n";
}
是的,您可以使用 lambda。你需要做的是在你定义它之后调用 lambda
void foo(unsigned number = []() {unsigned num = 0; std::cin >> num; return num; }())
// ^ define lambda ^^^
// call lambda_____|