"子类化"通用结构

Edw*_*hak 4 generics value-type swift

是否可以在swift中子类化通用结构?

假设我们有一个结构:

struct Foo<T> {}
Run Code Online (Sandbox Code Playgroud)

我wana"子类"它添加一些功能:

struct Something {}
struct Bar<F>: Foo<Something> { /*<<<= ERROR: Inheritance from non-protocol type 'Foo<Something>' */
    let store: Something
    let someF: F
}
Run Code Online (Sandbox Code Playgroud)

如果用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
    }
}
Run Code Online (Sandbox Code Playgroud)

知道如何使这个结构工作吗?

我试图坚持价值类型,但迅速使其变得困难.

Dun*_*n C 7

我的理解是,继承是类和非类对象(如swift中的结构和枚举)之间的定义差异.类具有继承性,其他对象类型则不具有继承性.

因此,我认为答案是"不,不是现在,也不是设计."

编辑:

正如Ammo在下面的评论中所指出的,另一个关键的区别是类对象是通过引用传递的,而非类对象(如结构)是通过值传递的.

  • 所以我需要一个类而不是结构.谢谢 (2认同)
  • 这是最大的差异之一。但是,通过值传递(即复制)的结构实例的行为与通过引用和引用计数传递的类实例的行为至少是同样重要的区别 (2认同)