泛型 – 在Swift中构造泛型类型的扩展
发布时间:2020-12-14 06:04:43 所属栏目:百科 来源:网络整理
导读:是否可能扩展一个通用类为专门/构造的通用类型?我想扩展Int数组与一个方法来计算其元素的总和。 例如 extension ArrayInt { func sum() - Int { return reduce(0) { $0 + $1 } }} 使用Swift 2,可以使用协议扩展实现(有关详细信息,请参阅 The Swift Progra
是否可能扩展一个通用类为专门/构造的通用类型?我想扩展Int数组与一个方法来计算其元素的总和。
例如 extension Array<Int> { func sum() -> Int { return reduce(0) { $0 + $1 } } }
使用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" 或者,对于更通用的东西,你可以@Wes Campaigne建议和创建一个可添加协议: protocol Addable { init() func + (lhs: Self,rhs: Self) -> Self } extension Int : Addable {} extension Double: Addable {} extension String: Addable {} // ... 接下来,扩展SequenceType以添加可添加元素的序列: extension SequenceType where Generator.Element: Addable { var sum: Generator.Element { return reduce(Generator.Element(),combine: +) } } 用法: 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" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |