【问题标题】:Can I get the number of a case statement in Objective-C?我可以在 Objective-C 中获取 case 语句的编号吗?
【发布时间】:2013-12-02 01:13:16
【问题描述】:

我有一个这样的 switch 语句:

switch (int) {
        case 0:
                // do x
            break;
        case 1:
                // do y
            break;
        default:
            break;
    }

我可以得到案件编号吗?

我问的原因是我在每个方法中都有一个使用变量 int 的方法。例如:

switch (int) {
        case 0:
                [self doMethod:string setTag:  <CASE NUMBER>  ];
            break;
        case 1:
                [self doMethod:string setTag:  <CASE NUMBER>  ];
            break;
        default:
            break;
    }

有什么办法吗?

谢谢!

【问题讨论】:

  • 只用原来的变量?
  • @SLaks - 有时我们都开始过度思考这些事情。 +1
  • @SLaks facepalm ....

标签: objective-c switch-statement


【解决方案1】:
switch (x) {
    case 0:
        // if you're here, you know x == 0
        [self doMethod:string setTag: x];
        break;
    ...
}

但除非string 在每种情况下都是不同的变量或文字,否则这没有多大意义;你可以很容易地说

if (x == 0 || x == 1) {
    [self doMethod: string setTag: x];
}

【讨论】:

    【解决方案2】:

    首先,你不能做switch (int)int 是一种数据类型。你需要一个变量。

    那么你需要做的就是在case语句中引用变量:

    int someVar = ... // some value
    switch (someVar) {
        case 0:
            [self doMethod:string setTag:someVar];
            break;
        case 1:
            [self doMethod:string setTag:someVar];
            break;
    }
    

    顺便说一句 - 如果你对多个案例做同样的事情,你可以这样做:

    int someVar = ... // some value
    switch (someVar) {
        case 0:
        case 1:
            [self doMethod:string setTag:someVar];
            break;
        default:
            // other stuff
            break;
    }
    

    正如 Josh 指出的那样,根据您的需要,整个事情可能只是:

    int someVar = ... // some value
    [self doMethod:string setTag:someVar];
    

    或者也许:

    int someVar = ... // some value
    if (someVar >= 0 && someVar <= 1) {
        [self doMethod:string setTag:someVar];
    }
    

    【讨论】:

    • 我使用 int 作为变量的替换。但我才意识到我是多么愚蠢......哦,这就是生活。
    • 我知道你的回答更深入,但你落后了一分钟,所以我不得不把这个交给@cHao。
    • 很好,但我的实际上是第一名。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2017-02-27
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2011-02-24
    相关资源
    最近更新 更多