c++ - 创建具有不同返回类型的 lambda?
问题描述
我遇到了这种情况。假设我有一段代码,我想控制它的返回方式:
bool foo() {
auto doSomething1 = []() {
return true;
}
auto doSomething2 = []() {
// execute something but not return
}
auto finalLambda = condition ? doSomething1 : doSomething2
if (case1) {
finalLambda()
}
if (case2) {
finalLambda()
}
... ...
return true;
}
这是实现这一目标的有效(好)方法吗?doSomething1 返回但 doSomething2 不返回。
解决方案
我发现您的三元运算符有问题。根据文档:
三元运算符具有以下形式:
经验1?经验2:经验3
三元运算符具有返回类型。返回类型取决于 exp2,以及根据通常\重载转换规则将 exp3 转换为 exp2。如果它们不可转换,编译器会抛出错误。
是否可以给出该 foo 函数的一些用例?当它被调用时,你期望发生什么?有什么可能的情况吗?如果所有的 lambda 函数都具有相同的返回类型,您会遇到问题吗?例如你可以添加return false;在第二个功能?
推荐阅读
- node.js - 如何在 node 环境中借助 typescript、graphql 编写 API
- javascript - 使用 PHP POP 删除模式删除操作不起作用?
- angular - 如何从 Angular2 中的 Observable 中检索值?
- python - 我似乎无法在 python 中处理来自 regex(re.search) 的空白结果,我要么得到重复,要么没有结果?
- python - 从通过 Python 运行的外部程序在新命令提示符下运行命令
- regex - 仅当表达式的其余部分匹配时,如何接受字符“'”?
- python - Python - 如何在不同的 for 循环函数中交换两个局部变量?
- html - HTML 表格将在桌面中压缩,但在移动设备中响应
- excel - VBA 中的列表框选择未正确进行
- java - 主要 GC 未在 G1 中运行