以下是在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).")
}
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).")
}
因此,在这种情况下,break
根本不需要。任何人都可以给我一个在交换机中使用中断的正确例子,我故意忽略某些情况吗?
这本书说:
此行为可用于匹配和忽略a中的一个或多个案例 切换声明。因为Swift的switch语句是详尽无遗的 不允许空案件,有时需要刻意 匹配并忽略一个案例,以使你的意图明确。您 通过将break语句写为案例的整个主体来完成此操作 你想忽略。当这种情况与switch语句匹配时, 案例中的break语句结束了switch语句 立即执行。
答案 0 :(得分:32)
当您不需要具有任何实际功能的案例时,可以使用break
内的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
switch
isLeapYear
语句中的break
语句的第一种情况可以让您捕获年份可被100整除且不能被400整除的情况,因为这些是特殊的非闰年。在这种情况下,{{1}}语句意味着"什么都不做"。
答案 1 :(得分:-1)
Swift语言要求每个switch
语句都考虑所有可能的情况。如果switch
语句的主题是Character
,如您的示例所示,则switch
语句必须包含每个可能字符的大小写。由于这显然不切实际,因此只要其他default:
个标签都不匹配,也可以添加case
标签。
你问,我什么时候必须故意忽略一些案件?答案是,就语言而言,总是需要考虑所有案例,因此,如果switch
陈述的主题可能需要您不感兴趣的值 - 不需要进一步处理的值 - 然后您需要添加default
个案来捕获这些值。如果您实际上并不想在default
案例中执行任何操作,那么语言的语法要求您拥有break
语句 - 您不能在default:
之间无任何内容以及}
声明的结束switch
。