avi*_*avi 21 break switch-statement swift
以下是在switch中使用break语句的给定示例:
let numberSymbol: Character = "?" // Simplified Chinese for the number 3
var possibleIntegerValue: Int?
switch numberSymbol {
case "1", "?", "?", "?":
possibleIntegerValue = 1
case "2", "?", "?", "?":
possibleIntegerValue = 2
case "3", "?", "?", "?":
possibleIntegerValue = 3
case "4", "?", "?", "?":
possibleIntegerValue = 4
default:
break
}
if let integerValue = possibleIntegerValue {
println("The integer value of \(numberSymbol) is \(integerValue).")
} else {
println("An integer value could not be found for \(numberSymbol).")
}
Run Code Online (Sandbox Code Playgroud)
的possibleIntegerValue是optional Int,所以我真的不觉得这是在交换机使用中断的一个更好的例子.而不是休息,甚至possibleIntegerValue = nil也有效.
let numberSymbol: Character = "?" // Simplified Chinese for the number 3
var possibleIntegerValue: Int?
switch numberSymbol {
case "1", "?", "?", "?":
possibleIntegerValue = 1
case "2", "?", "?", "?":
possibleIntegerValue = 2
case "3", "?", "?", "?":
possibleIntegerValue = 3
case "4", "?", "?", "?":
possibleIntegerValue = 4
default:
possibleIntegerValue = nil
}
if let integerValue = possibleIntegerValue {
println("The integer value of \(numberSymbol) is \(integerValue).")
} else {
println("An integer value could not be found for \(numberSymbol).")
}
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下break根本不需要.谁能给我一个在交换机中使用中断的正确例子,我故意忽略一些情况?
这本书说:
此行为可用于匹配和忽略switch语句中的一个或多个案例.由于Swift的switch语句是详尽的并且不允许空案例,因此有时需要故意匹配并忽略案例以使您的意图明确.您可以通过将break语句写为要忽略的案例的整个主体来完成此操作.当这种情况与switch语句匹配时,case中的break语句会立即结束switch语句的执行.
Nat*_*ook 41
当您不需要具有任何实际功能的情况时,可以使用breaka中的语句switch,但希望包含它以使您的逻辑更容易或更清晰.例如,假设您要使用switch语句来确定给定年份是否为闰年.(这是一个人为的例子.)
func isLeapYear(year: Int) -> Bool {
switch (year) {
case let x where (x % 100) == 0 && (x % 400) != 0:
break
case let x where (x % 4) == 0:
return true
default:
break
}
return false
}
isLeapYear(2014) // false
isLeapYear(2000) // true
isLeapYear(1900) // false
Run Code Online (Sandbox Code Playgroud)
switch内部声明的第一个案例isLeapYear允许您捕获年份可被100整除且不能被400整除的情况,因为这些是特殊的非闰年.break在这种情况下的陈述意味着"什么都不做".
| 归档时间: |
|
| 查看次数: |
20961 次 |
| 最近记录: |