Swift Binary Operator "<"

时间:2017-05-16 09:38:14

标签: swift operators comparable

func min(_ numbers:Double...)->Double{

        var result:Double = 0.0
        for num in numbers{

            if num < numbers {

                result = num
            }
        }

    return result
}

Here in if num < numbers showing me error:

Binary Operator "<" can not applied to operand of double and Double

2 个答案:

答案 0 :(得分:1)

你提到的错误可能是错误的,应该是:

  

二元运算符“&lt;”不能应用于Double的操作数和[Double]

表示您正在尝试比较double和double数组(numbers)。

你想要实施的是:

func min(_ numbers: Double...) -> Double? {
    guard var result = numbers.first else {
        return nil
    }

    for num in numbers {
        if result > num {
            result = num
        }
    }

    return result
}

用法:

if let minResult = min(2.1, 61.2, 33.6, 9.3, 4.2, 6.1, 6.1, 6.1, 3.4) {
    print(minResult) // 2.1
}

let nilResult = min() // nil

请注意,min应返回可选值,因为 - 如代码段中所述 - 具有variadic参数的函数可以在不使用标签的情况下获取0个参数。

同时

我建议使用min()数组方法,如下所示:

func min(_ numbers: Double...) -> Double? {
    return numbers.min()
}

输出应该相同......

答案 1 :(得分:0)

你可以用这个:

let numbers = [1.1, 6.2, 3.1, 9.3, 4.2, 6.1]

斯威夫特3:

numbers.min()
numbers.max()

斯威夫特2:

numbers.minElement()
numbers.maxElement()