Ниже приведен пример использования операторов 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. Поскольку инструкция switch Swifts является исчерпывающей и не допускает пустых случаев, иногда необходимо сознательно сопоставлять и игнорировать случай, чтобы сделать ваши намерения ясными. Вы сделайте это, написав инструкцию break как весь корпус дела вы хотите игнорировать. Когда этот случай согласован с оператором switch, оператор break в этом случае завершает инструкции переключателя немедленное выполнение.