Попробуйте указать тип параметра и тип возвращаемого значения в закрытии, чтобы помочь компилятору понять, какое значение он должен принимать и возвращать. Также у вас есть ошибка в цикле for
. Интервал должен быть таким: 0 ..< values.count
:
func isAllAbove(lower: Double) -> (Double...) -> Bool {
return { (values: Double...) -> Bool in
var conditions: [Bool] = []
for i in 0 ..< values.count {
conditions.append(lower < values[i])
}
return !conditions.contains(false)
}
}
let allAbove = isAllAbove(lower: 2)
print(allAbove(1, 2, 3)) // false
Кроме того, вы можете записать его почти в 1 строку кода:
let lower = 2
let isAllAbove = ![1, 2, 3].contains { $0 < lower }
print(isAllAbove1) // false