例如
extension Array<Int> { func sum() -> Int { return reduce(0) {使用Swift 2,可以使用协议扩展实现(有关详细信息,请参阅 The Swift Programming Language: Protocols)。extension SequenceType where Generator.Element == Int { var sum: Int { return reduce(0,combine: +) }}+ } }}
总而言之,你可以做到:
let nums = [1,2,3,4]print(nums.sum) // Prints: "10"
用法:
protocol Addable { init() func + (lhs: Self,rhs: Self) -> Self}extension Int : Addable {}extension Double: Addable {}extension String: Addable {}// ...
或者,对于更通用的东西,你可以@Wes Campaigne建议和创建一个可添加协议:
extension SequenceType where Generator.Element: Addable { var sum: Generator.Element { return reduce(Generator.Element(),combine: +) }}
接下来,扩展SequenceType以添加可添加元素的序列:
let doubles = [1.0,2.0,3.0,4.0]print(doubles.sum) // Prints: "10.0"let strings = ["a","b","c"]print(strings.sum) // Prints: "abc"
用法:
总结以上是内存溢出为你收集整理的泛型 – 在Swift中构造泛型类型的扩展全部内容,希望文章能够帮你解决泛型 – 在Swift中构造泛型类型的扩展所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)