你能以编程方式在交换机案例中调用特定案例吗?

时间:2015-01-16 21:22:02

标签: objective-c c switch-statement

我有一个如下所示的开关盒:

switch ( class.Function() )
{

    case firstThing:
    {

    }
        break;
    case secondThing:
    {
     //call third thing
     }
     break;
    case thirdThing:
    {

     }
     break;

    }

有没有办法在C / Objective-C中调用特定案例?

3 个答案:

答案 0 :(得分:1)

不知道为什么要这样做,但在你的例子中,如果你只是在案例secondThing结尾处遗漏了break语句:用户将继续执行后续的case语句,直到他们遇到断裂。

答案 1 :(得分:1)

您正在尝试实现的是switch语句失效。通过在案例#2之后省略break语句,您将执行#3中的任何代码。这可能是你想要的。

switch ( class.Function() )
{

    case firstThing:
    {

    }
        break;
    case secondThing:
    {
     //go to case 3
    }

    case thirdThing:
    {

    }
     break;

    }

答案 2 :(得分:0)

在您的特定示例中,您可以使用大小写,但这通常不是您的问题的解决方案,如果有secondThing特定的代码,则可能导致混淆并且可能被视为错误实践。

switch ( class.Function() )
{
    case firstThing:
    {

    }
    break;

    case secondThing:
    case thirdThing:
    {

    }
    break;
}

如果您只是将每个案例的主体实现为一个函数,那么这可能是更通用的解决方案:

switch( class.Function() )
{
    case firstThing:  something();                     break;
    case secondThing: anotherThing(); oneMoreThing();  break;
    case thirdThing:  oneMoreThing();                  break;
}