Swift需要详尽的switch语句,并且每个case都有可执行代码。有没有人找到一个好方法来处理你不想实际做任何事情的情况?我可以在那里放一个println(),但感觉很脏。
答案 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)
您可以检查特定情况,无需 exhustive
与 switch
case
s
假设你有一个这样的枚举,
enum Selection {
case one
case two
case three
}
var myCase = Selection.one
你可以这样检查,
if case .one = myCase {
print("one")
}
答案 7 :(得分:0)
我用于默认情况的干净解决方案是:
default: ()