Swift 斯威夫特的Noop';s穷举开关语句
Swift需要详尽的switch语句,并且每个案例都有可执行代码 “switch”中的“case”标签应至少有一条可执行语句 有没有人找到一个好方法来处理你不想做任何事情的情况?我可以在那里放一个println(),但感觉脏了。根据,您需要在那里使用Swift 斯威夫特的Noop';s穷举开关语句,swift,Swift,Swift需要详尽的switch语句,并且每个案例都有可执行代码 “switch”中的“case”标签应至少有一条可执行语句 有没有人找到一个好方法来处理你不想做任何事情的情况?我可以在那里放一个println(),但感觉脏了。根据,您需要在那里使用break: 每个案例的范围不能为空。因此,必须在每个案例标签的冒号(:)后面至少包含一条语句。如果您不打算在匹配的案例正文中执行任何代码,请使用单个break语句 您可以使用break语句: let vegetable = "red pe
break
:
每个案例的范围不能为空。因此,必须在每个案例标签的冒号(:)后面至少包含一条语句。如果您不打算在匹配的案例正文中执行任何代码,请使用单个break
语句
您可以使用
break
语句:
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."
}
switch 0 == 1 {
case true:
break
case false:
()
}
下面修改的示例是null语句的一个选项,但可能不是一个好的解决方案。我找不到像python pass这样的语句
{}()
对于开关箱,断路器是更好的选择
break
我发现的最干净的解决方案是在switch case中简单地包含最后一条语句作为默认语句。这避免了添加
break
或其他不必要的语句,同时仍然覆盖所有可能的情况
例如:
切换myVar{
案例0:
myOtherVar=“红色”
案例1:
myOtherVar=“蓝色”
违约:
myOtherVar=“绿色”
}
除了在其他答案中提到的中断
,我还看到()
用作不可操作语句:
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."
}
switch 0 == 1 {
case true:
break
case false:
()
}
如果您发现
break
令人困惑或想保存3个字符,请使用()
。在详尽的开关大小写语句中不执行任何操作:
斯威夫特:
switch yourVariable {
case .someCase:
break
}
迅捷:
switch yourVariable {
case .someCase:
EmptyView() // break does not work with ViewBuilder
}
在SwiftUI视图中使用EmptyView()而不是中断,可以防止出现以下错误:
包含控制流语句的闭包不能与函数一起使用
生成器视图生成器
EmptyView()是一个SwiftUI标准视图(使用Xcode 12、iOS 14进行测试),不需要自己定义。您可以检查具体的大小写,无需使用
开关大小写进行检查
假设你有一个这样的枚举
enum Selection {
case one
case two
case three
}
var myCase = Selection.one
你可以这样检查
enum Selection {
case one
case two
case three
}
var myCase = Selection.one
if case.one=myCase{
打印(“一”)
}
我在默认情况下使用的干净解决方案是:
default: ()
哦,斯威夫特再次打破了最小惊奇法则:)@Jiaaro需要中断
表明没有中断
的分支可能会失败。一个简单的()
wokrs也是如此。尽管如此,我还是喜欢break
,因为它让事情变得更清楚。使用关键字fallthrough
来遍历语句。当您想简短地注释掉默认值:
案例中的唯一一行时,这非常烦人。这似乎不是一件好事。我也同意,这暗示了c的失败行为,而不是Swift所做的(很高兴知道它会失败)。我来这里只是为了确保中断不会过早退出封闭循环。嗨@scottyhardy。这真的不是问题的重点。你写了问题的答案:“如何避免添加一个空的默认案例”(或者类似的东西)。在你的案例中,你实际上在所有的案例中都做了一些事情。但假设你有一个案例(比如数字2),你不想做任何事情,那么在这种情况下,你会回到同一个问题:在一个切换案例中,我们不想做任何事情时该怎么办?长话短说:使用break。