Noop for Swift的穷举切换声明

时间:2014-06-10 13:11:12

标签: swift

Swift需要详尽的switch语句,并且每个case都有可执行代码。有没有人找到一个好方法来处理你不想实际做任何事情的情况?我可以在那里放一个println(),但感觉很脏。

8 个答案:

答案 0 :(得分:132)

根据the book,你需要在那里使用break

  

每个案例的范围不能为空。因此,您必须在每个案例标签的冒号(:)后面至少包含一个语句。如果您不打算在匹配大小写的正文中执行任何代码,请使用单个break语句。

答案 1 :(得分:12)

你可以使用休息时间:

let vegetable = "red pepper"
var vegetableComment: String = "Nothing"
switch vegetable {
case "cucumber", "watercress":
    break // does nothing
case let x where x.hasSuffix("pepper"):
    vegetableComment = "Is it a spicy \(x)?"
default:
    vegetableComment = "Everything tastes good in soup."
}

docs

修改的示例

答案 2 :(得分:2)

在详尽的 switch case 语句中什么都不做:

斯威夫特:

switch yourVariable {
case .someCase:
    break
}

SwiftUI:

switch yourVariable {
case .someCase:
    EmptyView() // break does not work with ViewBuilder
}

在 SwiftUI 视图中使用 EmptyView() 而不是 break 可以防止错误:

<块引用>

包含控制流语句的闭包不能与函数一起使用 构建器 ViewBuilder。

EmptyView() 是 SwiftUI 标准视图(使用 Xcode 12、iOS 14 测试),不需要自己定义。

答案 3 :(得分:0)

以下是null语句的一个选项,但可能不是一个好的解决方案。我找不到像python pass这样的语句

{}() 

对于开关盒,断路是更好的选择。

break

答案 4 :(得分:0)

我找到的最干净的解决方案是简单地将switch案例中的最后一条语句作为默认语句。这样可以避免添加./gradlew installDebug或其他不必要的语句,同时仍然涵盖所有可能的情况。

例如:

break

答案 5 :(得分:0)

除了其他答案中提到的break外,我还看到()用作无操作语句:

switch 0 == 1 {
case true:
    break
case false:
    ()
}

如果发现()令人困惑或要保存3个字符,请使用break

答案 6 :(得分:0)

您可以检查特定情况,无需 exhustiveswitch cases

假设你有一个这样的枚举,

enum Selection {
        case one
        case two
        case three
    }
var myCase = Selection.one
    

你可以这样检查,

    if case .one = myCase {
        print("one")
    }

答案 7 :(得分:0)

我用于默认情况的干净解决方案是:

default: ()