2016-07-31 17 views
0

我需要迅速以代码“如果数字是介于1到5”“如果数为1〜5之间”如何包含范围例如,在迅速

我试过,但它不工作。

if myPercent == (1 ... 5) { 
     let numberGroup = 1 

我该如何解决这个问题?

回答

3

你可以只使用两个条件来检查它是否在范围:

if myPercent >= 1 && myPercent <= 5 { 
    ... 
} 
+0

很棒@ Aurora0001 - 完美运作。我接受这个答案,谢谢 –

+0

很高兴帮助。我会测试一下,看看我的解决方案还是@ dasblinkenlight的执行效果更好:我怀疑'contains'方法对于大范围会很慢,但在这里可能很好。 – Aurora0001

6

使用contains

if (1...5).contains(myPercent) { 
    ... 
} 
+0

非常感谢你@dasblinkenlight –

+0

是的,它在我的代码中起作用。大 –

+0

这应该是答案。它比以前更干净。 – TheValyreanGroup

5

contains似乎是基本的方式与范围内工作。

这里有一些补充...

使用模式匹配操作:

if 1...5 ~= myPercent { 
    //... 
} 

使用,如果情况:

if case 1...5 = myPercent { 
    //... 
} 
+0

完美。感谢@OOpPer很好很简单。这就是我所寻找的 - 我知道我的尝试很接近,这正是我想要达到的目标。 –

1

考虑使用扩展与switch statement组合:

extension Int { 
    func isBetween(range:Range<Int>) -> Bool { 
     switch self { 
     case range: 
      return true 
     default: 
      return false 
     } 
    } 
} 

这使得实现更容易:

5.isBetween(1...5) // true 
6.isBetween(1...5) // false 

注意,对于这在Xcode 8 /斯威夫特3,必须使用半开区间操作员的工作量:

5.isBetween(1..<6) // true 
6.isBetween(1..<6) // false 

所以在您的实例:

if myPercent.isBetween(1..<6) { 
    let numberGroup = 1 
} 

或许:

let numberGroup = myPercent.isBetween(range: 1..<6) ? 1 : 0