未明确传递参数时,默认为使用lambda的用户输入 [英] Defaulting to user input using a lambda when parameter is not explicitly passed

查看:102
本文介绍了未明确传递参数时,默认为使用lambda的用户输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编写了以下代码(仍然想知道它的用途... )如果未传递参数,则默认为用户输入。

I wrote the following code (Still wondering about its uses...) to default to user input if the parameter is not passed.

#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?


What I wanted to ask was, is there any way we can convert the getInput() function to a lambda? Something on the lines of

void foo(unsigned number = { []() {unsigned num = 0; std::cin >> num; return num; } }) {
    std::cout << number << "\n";
}

此外,如何在python

推荐答案

是的,您可以使用lambda。您需要做的就是在定义后调用lambda

Yes, you can use a lambda. What you need to do is call the lambda after you define it like

void foo(unsigned number = []() {unsigned num = 0; std::cin >> num; return num; }()) 
//                         ^                   define lambda                    ^^^
//                                                               call lambda_____|

这篇关于未明确传递参数时,默认为使用lambda的用户输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆