Swift 斯威夫特的Noop';s穷举开关语句

Swift 斯威夫特的Noop';s穷举开关语句,swift,Swift,Swift需要详尽的switch语句,并且每个案例都有可执行代码 “switch”中的“case”标签应至少有一条可执行语句 有没有人找到一个好方法来处理你不想做任何事情的情况?我可以在那里放一个println(),但感觉脏了。根据,您需要在那里使用break: 每个案例的范围不能为空。因此,必须在每个案例标签的冒号(:)后面至少包含一条语句。如果您不打算在匹配的案例正文中执行任何代码,请使用单个break语句 您可以使用break语句: let vegetable = "red pe

Swift需要详尽的switch语句,并且每个案例都有可执行代码

“switch”中的“case”标签应至少有一条可执行语句

有没有人找到一个好方法来处理你不想做任何事情的情况?我可以在那里放一个println(),但感觉脏了。

根据,您需要在那里使用
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。