【问题标题】:Does a "return..." statement make a "break;" moot?“return...”语句是否会产生“break;”?没有实际意义?
【发布时间】:2014-10-15 03:05:42
【问题描述】:

我从 VB.NET 背景来到 Objective-C,其中 switch 语句是 Select Case 并且不需要(或可能)没有 break 语句。

我知道一般规则是在每个case 语句的末尾放置一个break 语句,这样执行就不会“落空”到下一个case 语句。

在编写 iOS 应用程序时,我经常在 -tableView: heightForRowAtIndexPath: 方法中使用 switch 语句。基本上,我经常让我的单元格报告所需的高度,所以我最终会得到这样的switch 语句:

switch (indexPath.row) {
    case 0:
        return ...
        break;
    case 1:
        return ...
        break;

    ...

    default:
        return ...
        break;
}

我看到了this answer,这对我来说很有意义,也是我期望的答案,但这个问题专门针对 Java,我想看看同样的答案是否适用于 Objective-C。

我还找到了this answer,它与 C 相关,我认为这也是 Objective-C 的正确答案。

那么,return 语句是专门的 break 语句吗?

【问题讨论】:

    标签: objective-c return switch-statement


    【解决方案1】:

    阅读您对switchreturn 的想法,是的,return 语句可以被视为专门的break 语句。

    A break is just a branch table abstraction, so as return is,所以在一天结束时,他们将简单地执行跳转指令。

    【讨论】:

      【解决方案2】:

      幕后没有魔法。这里唯一的大区别是,使用 break 时,您只需将 switch 与 return 功能分开。所以后果很明显。如果你有回报,你不需要休息,因为永远不会达到休息时间。某些 IDE 会变灰以指出它是不可访问的代码片段。

      【讨论】:

        【解决方案3】:

        没有返回语句不是专门的中断。 return 使您退出函数 break 使您退出 switch 语句。如果你有回报,你就不需要休息,但它们是不同的东西。

        【讨论】:

        • 我明白你的意思,但在我看来,它一个专门的中断,因为它完成了中断所做的所有事情,然后是一些。我的主要问题是关于“休息时做的一切”,所以我不想对“然后一些”的语义争论不休。感谢您的回答!
        猜你喜欢
        • 2016-12-05
        • 1970-01-01
        • 2020-03-09
        • 1970-01-01
        • 2011-03-12
        • 2013-12-18
        • 2016-05-26
        • 1970-01-01
        • 2021-11-18
        相关资源
        最近更新 更多