我如何从通用扩展中 return 一个 Swift 泛型?
How can I return a Swift generic from a general extension?
如果我有一个像这样的通用 class:
class Generic<T: Any> {
var object: T
init(object: T) {
self.object = object
}
}
我可以像这样从初始化器访问对象:
Generic(object: "Hello World").object.count // 11
由于这个泛型 class 适用于 Any
类型,我如何将所有类型扩展到 return 该泛型 class 的对象?
我的意思是这样的:
extension Any {
var generic: Generic<Self> {
Generic(object: self)
}
}
所以我可以打电话给:
"Hello World".generic.object.count // 11
我对所有 Any
、AnyObject
、Self
、self
、Type
等感到困惑。
更新:
例如,我如何使用计算属性 array: Array<Comparable>
扩展所有 Comparable
?我在想类似的东西:
extension Comparable {
var array: Array<Comparable> {
Array(self)
}
}
您不能扩展 Any,请参阅
可比扩展示例:
extension Comparable {
var array: Array<Self> {
[self]
}
}
如果我有一个像这样的通用 class:
class Generic<T: Any> {
var object: T
init(object: T) {
self.object = object
}
}
我可以像这样从初始化器访问对象:
Generic(object: "Hello World").object.count // 11
由于这个泛型 class 适用于 Any
类型,我如何将所有类型扩展到 return 该泛型 class 的对象?
我的意思是这样的:
extension Any {
var generic: Generic<Self> {
Generic(object: self)
}
}
所以我可以打电话给:
"Hello World".generic.object.count // 11
我对所有 Any
、AnyObject
、Self
、self
、Type
等感到困惑。
更新:
例如,我如何使用计算属性 array: Array<Comparable>
扩展所有 Comparable
?我在想类似的东西:
extension Comparable {
var array: Array<Comparable> {
Array(self)
}
}
您不能扩展 Any,请参阅
可比扩展示例:
extension Comparable {
var array: Array<Self> {
[self]
}
}