if integer is greater than x but less than y (Swift)

19,006

Solution 1

Did you try this?

if integer > 300 && integer < 700 {
    // do something
} else {
    // do something else               
}

Hope this helps

Solution 2

There is a type, HalfOpenInterval, that can be constructed with ... and that has a .contains method:

if (301..<700).contains(integer) {
    // etc.
}

Note, 301..<700 on its own will create a Range, which doesn’t have a contains function, but Swift’s type inference will see that you’re calling a method that only HalfOpenInterval has, and so picks that particular overload.

I mention this just because if you want to store the interval as a variable instead of using it in-line, you need to specify:

let interval = 301..<700 as HalfOpenInterval
if interval.contains(integer) {
  // etc.
}
Share:
19,006
William Larson
Author by

William Larson

Updated on June 26, 2022

Comments

  • William Larson
    William Larson almost 2 years

    I was wondering if there is any smooth way of checking the value of an integer in a range in swift.

    I have an integer that can be any number between 0 and 1000

    I want to write an if statement for "if the integer is between 300 and 700 - do this and if its any other number - do something else"

    I could write:

    if integer > 300 {
        if integer < 700 {
          //do something else1
        }
        //do something
    } else {
        // do something else2
    
    }
    

    But I want to minimize the amount of code to write since "do something else1" and "do something else2" are supposed to be the same

    It doesn't seem that you can write :

    if 300 < integer < 700 {
    
    } else {
    
    }
    

    I tried using

    if integer == 300..<700 {
    }
    

    but that didn't work either. Anybody got a suggestion?