我正在尝试使用一种方法将Swift类型的数值协议进行扩展,该方法将一个Numeric类型除以另一个相同类型的类型,如下所示:
extension Numeric {
func percentage<T>(of: T) -> T where T.Type == Self.Type {
return self / of
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误
相同类型的要求使通用参数“ T”和“ Self”等效
当它不是协议扩展时,它可以工作,但是我很想知道是否有可能将其作为扩展,以及该错误的含义。
这有效:
func percentage<T: Numeric>(n1: T, n2: T) -> T {
return n1 / n2
}
let d = x(n1: 2.0, n2: 3.0)
Run Code Online (Sandbox Code Playgroud)
不需要T。
extension Numeric {
func percentage<Self>(of whole: Self) -> Self {
return self / whole
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |