c++ - C++ 使用 switch-case 返回值作为 if 语句的条件
问题描述
可能有人用 C++ 写这样的东西:
// ...
if(value <= switch(secValue){
case First:
return 1;
case Second:
return 2;
return -1;
}){
//... do some logic ...
} // end if
谢谢
解决方案
正是这个,没有。但是您可以使用lambda 表达式来接近。
例子:
#include <iostream>
int main()
{
// dummy types and values needed for demo
enum test_enum
{
First, Second
} secValue = First;
int value = 1;
if (value <= [secValue]()
// ^ Capture secValue in lambda expression
{
switch (secValue)
{
case First:
return 1;
case Second:
return 2;
default: // needed default case. Can't just have a stray return
// in a switch
return -1;
}
}())
// ^ immediately invoke lambda
{
std::cout << "Huzah!";
}
}
推荐阅读
- php - Symfony 4 - ServiceCircularReferenceException
- mysql - MySQL - UNION over SELECT 结果
- javascript - 将值存储在使用 ajax 创建的表单中
- reactjs - reactjs中的bootstrap和react-router有什么帮助吗
- swift - tvOS PressesBegan 调用太晚(焦点已经改变后)
- matlab - 如何在 MATLAB 中生成日期时间数组?
- android - 哪种是干净架构中模块之间通信的最佳方法
- sas - 我在 SAS 宏中使用 IF 语句时遇到困难
- android - RNFetchBlob 下载无法在 android 9 上运行
- python - 如何合并两个具有重复列的数据框以连接每个字符串值?