是否可以在 Swift 中创建具有 Self 或关联类型要求的通用计算属性,如果可以,如何创建?
Is is possible to create generic computed properties with Self or associated type requirements in Swift, and if so how?
考虑以下几点:
protocol SomeProtocol: Equatable {}
// then, elsewhere...
var someValue: Any?
func setSomething<T>(_ value: T) where T: SomeProtocol {
someValue = value
}
func getSomething<T>() -> T? where T: SomeProtocol {
return someValue as? T
}
这些函数工作正常,但本质上就像计算属性一样。有没有办法实现类似下面的东西?
var something<T>: T where T: SomeProtocol {
get { return someValue as? T }
set { someValue = newValue }
}
感谢您的阅读。很抱歉,如果这个问题已经在其他地方被问过,我已经搜索过了,但有时我的搜索功能很弱。
您需要在泛型上定义计算属性,计算属性本身不能定义泛型参数。
struct Some<T:SomeProtocol> {
var someValue:Any
var something:T? {
get {
return someValue as? T
}
set {
someValue = newValue
}
}
}
考虑以下几点:
protocol SomeProtocol: Equatable {}
// then, elsewhere...
var someValue: Any?
func setSomething<T>(_ value: T) where T: SomeProtocol {
someValue = value
}
func getSomething<T>() -> T? where T: SomeProtocol {
return someValue as? T
}
这些函数工作正常,但本质上就像计算属性一样。有没有办法实现类似下面的东西?
var something<T>: T where T: SomeProtocol {
get { return someValue as? T }
set { someValue = newValue }
}
感谢您的阅读。很抱歉,如果这个问题已经在其他地方被问过,我已经搜索过了,但有时我的搜索功能很弱。
您需要在泛型上定义计算属性,计算属性本身不能定义泛型参数。
struct Some<T:SomeProtocol> {
var someValue:Any
var something:T? {
get {
return someValue as? T
}
set {
someValue = newValue
}
}
}