嗨,我在swift中确实有一组自定义对象,比如下面的
低于等级的对象
Class Person {
let name: String
let pointsEarned: CGFloat
}
阵列类似于下方
let person1 = Person(“name1”, “5.6”)
let person2 = Person(“name2”, “6.6”)
let person3 = Person(“name3”, “1.6”)
let persons = [person1, person2, person3 ]
我想找到一个赢得的积分接近7.0 的人
数组上有我可以为此写的扩展吗?
感谢您的帮助!谢谢
根据距离球门的距离(7
(, computed as
abs(球门得分(对对象进行排序`:
people.sort { abs(7 - $0.score) < abs(7 - $1.score) }
Alexander的答案很好,但您只需要min
。
public extension Sequence {
func min<Comparable: Swift.Comparable>(
by getComparable: (Element) throws -> Comparable
) rethrows -> Element? {
try self.min {
try getComparable($0) < getComparable($1)
}
}
}
我还认为abs
作为一个全局函数看起来过时了。CCD_ 5是相同的值。
persons.min { ($0.pointsEarned - 7).magnitude }
如果需要,可以使用带有尾随闭包的参数标签:
persons.min(by:) { ($0.pointsEarned - 7).magnitude }