Установка нескольких целых чисел для значения теста оператора "If"

Я пытаюсь установить несколько целых тестов для одной переменной в инструкции if. Логические операторы не будут работать из-за того, что они должны быть логическими.

Например:

if self.nodeAtPoint(location) == self.fake {
    groundspeed = 35.0
    self.button1value++

    if(button1value == 2) {
      groundspeed = 5.0
    }

    if(button1value == 4){
        groundspeed = 5.0
    }

    if(button1value == 6) {
        groundspeed = 5.0
    }
}

Цель состоит в том, чтобы все четные числа отображались только в одном выражении if.

Ответ 1

Если мы просто хотим проверить, четный или нет button1value, мы можем сделать это с помощью оператора modulo (%):

if button1value % 2 == 0 {
    // button1value is even
    groundspeed = 5.0
}

Если мы проверяем какой-либо другой набор, мы можем использовать оператор switch:

switch button1value {
    case 2,4,6:
        // button1value is 2, 4, or 6
        groundspeed = 5.0
    default:
        // button1value is something else
}

Мы можем делать другие аккуратные трюки с помощью инструкции Swift switch, если мы хотим:

switch (button1value % 2, button1value % 3) {
    case (0,0):
        // button1value is an even multiple of 3 (6,12,18...)
    case (0,_):
        // button1value is an even number not a multiple of three (2,4,8,10,14...)
    case (_,0):
        // button1value is an odd multiple of three (3,9,15,21...)
    default:
        // button1value is none of the above: (1,5,7,11...)
}

Ответ 2

Проверить и принять ответ nhgrif для лучшего варианта. Но только ради полноты, если вы хотите сохранить свой путь, вы можете использовать логический оператор OR ||

if(button1value == 2 || button1value == 4 || button1value == 6) {
    groundspeed = 5.0
}

Это проверяет, истинно ли какое-либо из заданных логических значений.

Существует также логический оператор И &&.

Ответ 3

Вы можете использовать contains для проверки нескольких значений. Просто передайте массив, содержащий значения, которые вы хотите проверить, и переменную в качестве второго параметра:

if contains([2, 4, 6], button1value) {
    groundspeed = 5.0
}