首页 > 解决方案 > C++ 使用 switch-case 返回值作为 if 语句的条件

问题描述

可能有人用 C++ 写这样的东西:

// ...
if(value <= switch(secValue){
   case First:
      return 1;
   case Second:
      return 2;
   return -1;
}){
   //... do some logic ...
} // end if

谢谢

标签: c++

解决方案


正是这个,没有。但是您可以使用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!";
    } 
}

推荐阅读