Vik*_*nha -1 generics ios swift
我正在尝试编写一个通用函数,它将添加字符串、整数、浮点数、双精度数。
但只有当我的泛型是数字约束时,我的泛型函数才使用数字。
func add<T: Numeric>(first:T, second:T) -> T {
return first + second
}
Run Code Online (Sandbox Code Playgroud)
要使用字符串,它必须是序列,但同样它不适用于数字。
所以,请让我知道我在这里做错了什么。有没有办法制作单个函数来添加字符串和数字。
一种可能的解决方案是这样的。您知道您希望您的方法适用于任何已+定义的...因此定义一个显式协议。我们称它为Addable:
protocol Addable {
static func +(lhs: Self, rhs: Self) -> Self
}
Run Code Online (Sandbox Code Playgroud)
现在,使用扩展,声明Addable您关心的类型的一致性:
extension String: Addable {}
extension Int: Addable {}
extension Double: Addable {}
Run Code Online (Sandbox Code Playgroud)
并将您的add函数定义为:
func add<T: Addable>(first: T, second: T) -> T {
return first + second
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |