func maxOne<T:Comparable>( _ seq:[T]) -> T{
assert(seq.count>0)
return seq.reduce(seq[0]){
max($0, $1)
}
}
maxOne([1,2,199,21,17,92,17]) //输出结果为:199
class Student: CustomStringConvertible,Comparable{
var name:String
var score:Int
init(name:String,score:Int) {
self.name = name
self.score = score
}
var description: String{
return name+",score:\(score)"
}
}
func ==(s1:Student,s2:Student) -> Bool {return s1.score == s2.score}
func <(s1:Student,s2:Student) -> Bool {return s1.score < s2.score}
let a = Student(name:"studentA",score:100)
let b = Student(name:"studentB",score:98)
let c = Student(name:"studentC",score:70)
let d = Student(name:"studentD",score:20)
let students = [a,b,c,d]
maxOne(students) //studentA,score:100