有人知道测试三个数字是否相同的快捷方式吗?我知道这有效:
if number1 == number2 && number2 == number3 {
}
但我想要更干净的东西,比如;
if number1 == number2 == number3 {
}
因为我比较了许多不同的价值观,所以非常重要。
答案 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
}
此帖中定义了NumericType
:What 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")
}