Подтвердить что ты не робот

Быстрый случай проваливается

Быстро ли проваливается утверждение? например, если я делаю следующее

var testVar = "hello"
var result = 0

switch(testVal)
{
case "one":
    result = 1
case "two":
    result = 1
default:
    result = 3
}

Можно ли использовать один и тот же код для случая "один" и "два"?

4b9b3361

Ответ 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, соответствует или не соответствует.