Попытка отобразить разные сообщения print () в зависимости от числовой переменной, т.е. Температуры

#swift

#swift

Вопрос:

Я в основном новичок в swift. Итак, это может быть нелепый вопрос. Я занимаюсь этим слишком долго. Мои лекции моего профессора охватывают это, но то, как это было объяснено, мне было немного сложно понять.

Я пытаюсь заставить swift печатать разные фразы в зависимости от переменной temp. Если у меня есть только первый набор кода и изменить переменную на -x, она отлично работает без остальной части кода. Я не совсем уверен, где это становится совершенно неправильным. Я получаю кучу ошибок, я это знаю. Заранее благодарим вас за любую помощь.

 

    if temp < 0 {
     
    print("Too Cold for Outdoors")
    }
    
    if temp = 0 ... 20 {
    
        print("Very Cold Weather")
    }
    
    if temp = 21 ... 40 {
    
        print("Cold")
    }

    if temp = 41 ... 60 {
    
    print("Normal")
    }

    if temp = 61 ... 80 {
    
    print("Nice")
    }

    if temp = 81 ... 90 {
    
    Print("Warm")
    }

    if temp >= 91 {
    
    print("Hot")    
    }
    ``` 
  

Комментарии:

1. В swift = означает присвоение, и вы используете == для проверки на равенство, но вы не можете проверить такой диапазон, либо разделить его на два, temp >= 21 amp;amp; temp <= 40 либо использовать contains , например (21...40).contains(temp)

2. if temp = 61 ... 80 анализирует как: if (temp = (61 ... 80)) , то есть пытается присвоить Range<Int> (нижний 61, верхний 80) вызываемой переменной temp . Результат этого выражения присваивания пытается обрабатываться как логическое значение для if использования. За исключением оператора присваивания Swift, = , является оператором, а не выражением. Это не «приводит» к какому-либо значению.

3. Теперь это имеет гораздо больше смысла для меня!

Ответ №1:

Помимо того факта, что вы используете неправильный оператор для сравнения = вместо == , и если вы хотите проверить, содержит ли диапазон значение, вам нужен оператор сопоставления с образцом ~= . т.е.: if 0...<21 ~= temp { но то, что вы действительно ищете, это переключатель:

 let temp = 76
switch temp {
case .min ..<  0: print("Too Cold for Outdoors")
case    0 ..< 21: print("Very Cold Weather")
case   21 ..< 41: print("Cold")
case   41 ..< 61: print("Normal")
case   61 ..< 81: print("Nice")
case   81 ..< 91: print("Warm")
default: print("Hot")
}
  

Это выведет:

Неплохо

Комментарии:

1. Ну ладно! Это имеет больше смысла, рассматривая это таким образом. Я подумал, что способ его настройки будет слишком сложным для того, насколько простым он должен быть. Спасибо.