诺普为斯威夫特的穷举开关声明

Sea*_*ins 82 swift

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

das*_*ght 135

根据这本书,你需要在break那里使用:

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

  • @Jiaaro需要`break`表示没有'break`的分支可能会通过. (9认同)
  • 哦,斯威夫特再一次打破了最小惊喜的法则:) (7认同)
  • 一个简单的`()`wokrs也是.不过我更喜欢"休息",因为它让事情变得更加清晰.使用关键字`fallthroug`来通过语句. (4认同)
  • 我必须来这里只是为了确保休息不会提前退出封闭循环.. (2认同)

Fir*_*iro 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."
}
Run Code Online (Sandbox Code Playgroud)

文档修改的示例


小智 9

在详尽的 switch case 语句中不执行任何操作:

迅速:

switch yourVariable {
case .someCase:
    break
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特用户界面:

switch yourVariable {
case .someCase:
    EmptyView() // break does not work with ViewBuilder
}
Run Code Online (Sandbox Code Playgroud)

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

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

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


lbs*_*eek 5

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

{}() 
Run Code Online (Sandbox Code Playgroud)

对于switch case,break是更好的选择。

break
Run Code Online (Sandbox Code Playgroud)