以下是在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
根本不需要.谁能给我一个在交换机中使用中断的正确例子,我故意忽略一些情况?
这本书说:
此行为可用于匹配和忽略switch语句中的一个或多个案例.由于Swift的switch语句是详尽的并且不允许空案例,因此有时需要故意匹配并忽略案例以使您的意图明确.您可以通过将break语句写为要忽略的案例的整个主体来完成此操作.当这种情况与switch语句匹配时,case中的break语句会立即结束switch语句的执行.
Nate Cook.. 41
当您不需要具有任何实际功能的情况时,可以使用break
a中的语句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
允许您捕获年份可被100整除且不能被400整除的情况,因为这些是特殊的非闰年.break
在这种情况下的陈述意味着"什么都不做".
当您不需要具有任何实际功能的情况时,可以使用break
a中的语句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
允许您捕获年份可被100整除且不能被400整除的情况,因为这些是特殊的非闰年.break
在这种情况下的陈述意味着"什么都不做".