// 泛型扩展
// public struct Array: RandomAccessCollection, MutableCollection
// Array 的定义已经声明了 Element 为泛型类型
// 我们可以对 Array 进行再次扩展
extension Array {
var radom: Element? {
return self.count != 0 ? self[Int(arc4random_uniform(UInt32(self.count)))] : nil
}
// 扩展的泛型方法中,可以添加除了 T 意外的其他的泛型符号
func appendRandomDescripition(_ input: U) -> String{
if let element = self.radom {
return "\(element)" + " " + input.description
} else {
return "empty array"
}
}
}
let languages = ["Swift", "Objc", "Java"]
let radom = languages.radom
languages.appendRandomDescripition(radom!)