是否可以在swift中继承泛型结构?
假设我们有一个结构:
struct Foo<T> {}
和我wana“子类”它添加一些功能:
struct Something {}
struct Bar<F>: Foo<Something> { /*<<<= ERROR: Inheritance from non-protocol type 'Foo<Something>' */
let store: Something
let someF: F
}
如果用class替换struct,则此示例有效。
class Foo<T> {}
//struct Bar1<T>: Foo<T> { /* Inheritance from non-protocol type 'Foo<T>' */
// let name = "Bar"
//}
class Something {}
class Bar<F>: Foo<Something> { /* Inheritance from non-protocol type 'Foo<Something>' */
let store: F?
init(value: F?) {
self.store = value
}
}
任何想法如何使这个结构工作?
我正在努力坚持价值类型,但迅速使其变得艰难。
答案 0 :(得分:6)
我的理解是,继承是类和非类对象(如swift中的结构和枚举)之间的中心差异。类有继承,其他对象类型没有。
因此,我认为答案是“不,不是现在,也不是设计。”
正如Ammo在下面的评论中所指出的,另一个关键的区别是,类对象是通过引用传递的,而非类对象(如结构)是按值传递的。