比较三个值是否相等

时间:2016-06-18 19:01:19

标签: swift if-statement compare

有人知道测试三个数字是否相同的快捷方式吗?我知道这有效:

if number1 == number2 && number2 == number3 {

}

但我想要更干净的东西,比如;

if number1 == number2 == number3 {

}

因为我比较了许多不同的价值观,所以非常重要。

5 个答案:

答案 0 :(得分:10)

你可以使用一套

if Set([number1, number2, number3]).count == 1 {
    ...

虽然我认为它不像多个if子句一样透明

答案 1 :(得分:9)

您可以使用元组的力量和平等的传递属性。

if (number1, number2) == (number2, number3) {

}

只有当number1等于number2 并且 number2等于number3时,此IF的子句才有效。这意味着3个值必须等于。

答案 2 :(得分:4)

您可以将它们添加到数组中并使用集合:

var someSet = NSSet(array: [2,2,2])

if someSet.count == 1 {
    print("Same values")
}

答案 3 :(得分:3)

除了Set之外我不知道任何事情,我建议将它包装在一个函数中以使你的意图清晰。这些方面的东西:

{{1}}

除此之外,也许您可​​以对操作符重载感到满意吗?

答案 4 :(得分:1)

试试这个:

func areEqual<T: NumericType>(numbers: T...) -> Bool {
   let num = numbers[0]
   for number in numbers {
       if number != num {
          return false
       }
   }
   return true
}

此帖中定义了NumericTypeWhat protocol should be adopted by a Type for a generic function to take any number type as an argument in Swift?

这将允许您对所有数字类型使用该功能

您只需传递任意数量的数字,如:

//returns true
if areEqual(1, 1, 1) {
   print("equal")
}