如果整数大于x但小于y(Swift)

Wil*_*son 5 integer if-statement range swift

我想知道是否有任何平滑的方法来检查swift范围内的整数值.

我有一个整数,可以是0到1000之间的任何数字

我想写一个if语句,"如果整数在300到700之间 - 这样做,如果有任何其他数字 - 做其他事情"

我可以写:

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

}
Run Code Online (Sandbox Code Playgroud)

但是我想最小化要编写的代码量,因为"做其他事情1"和"做其他事情2"应该是相同的

你好像不能写:

if 300 < integer < 700 {

} else {

}
Run Code Online (Sandbox Code Playgroud)

我试过用

if integer == 300..<700 {
}
Run Code Online (Sandbox Code Playgroud)

但那也不起作用.有人有个建议吗?

CrA*_*HeR 12

你试过这个吗?

if integer > 300 && integer < 700 {
    // do something
} else {
    // do something else               
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • 实际上我确实发现了Martin R指向的更短的方式你可以写:如果300 ... 700~ =整数{} (3认同)
  • 谢谢,那行得通!我认为可能有一种更短的书写方式,而无需与&amp;&amp;和“整数”重复,但这也许是最好的方式。谢谢 (2认同)

Air*_*ity 9

有一个类型,HalfOpenInterval可以用它构造,...并且有一个.contains方法:

if (301..<700).contains(integer) {
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

注意,301..<700它自己会创建一个Range没有contains函数的函数,但是Swift的类型推断会看到你正在调用一个只有的方法,HalfOpenInterval所以选择那个特定的重载.

我之所以提到这一点,只是因为如果你想将间隔存储为变量而不是在线使用它,你需要指定:

let interval = 301..<700 as HalfOpenInterval
if interval.contains(integer) {
  // etc.
}
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是,在Xcode 6.3的优化模式下,这也提供了相同的"最佳"汇编代码,如果整数> 300 &&整数<700`或`if 300 ... 700~ = integer`,我刚刚添加到http:/ /stackoverflow.com/a/24893494/1187415. (4认同)