Быстро ли проваливается утверждение? например, если я делаю следующее
var testVar = "hello"
var result = 0
switch(testVal)
{
case "one":
result = 1
case "two":
result = 1
default:
result = 3
}
Можно ли использовать один и тот же код для случая "один" и "два"?
Ответ 1
Да. Вы можете сделать это следующим образом:
var testVal = "hello"
var result = 0
switch testVal {
case "one", "two":
result = 1
default:
result = 3
}
В качестве альтернативы вы можете использовать ключевое слово fallthrough
:
var testVal = "hello"
var result = 0
switch testVal {
case "one":
fallthrough
case "two":
result = 1
default:
result = 3
}
Ответ 2
case "one", "two":
result = 1
Нет операторов break, но случаи намного более гибкие.
Добавление: Как указывает Analog File, на самом деле в Swift есть операторы break
. Они по-прежнему доступны для использования в циклах, но не нужны в операторах switch
, если только вам не нужно заполнять пустой случай, поскольку пустые случаи не разрешены. Например: default: break
.
Ответ 3
var testVar = "hello"
switch(testVar) {
case "hello":
println("hello match number 1")
fallthrough
case "two":
println("two in not hello however the above fallthrough automatically always picks the case following whether there is a match or not! To me this is wrong")
default:
println("Default")
}
Ответ 4
Ключевое слово fallthrough
в конце case вызывает поведение, которое вы ищете, и несколько значений могут быть проверены в одном случае.
Ответ 5
Вот пример, который вам легко понять:
let value = 0
switch value
{
case 0:
print(0) // print 0
fallthrough
case 1:
print(1) // print 1
case 2:
print(2) // Doesn't print
default:
print("default")
}
Заключение: используйте fallthrough
для выполнения следующего случая (только один), когда предыдущий, имеющий fallthrough
, соответствует или не соответствует.