如何继承swift中的struct?

Rav*_*mar 4 inheritance swift

Swift 中有继承结构体的吗?

struct Resolution {
    var width = 0
    var height = 0
}
struct Display : Resolution {}
Run Code Online (Sandbox Code Playgroud)

Jer*_*myP 6

structs 只能从协议继承(如果这个词正确的话)。不能从基础继承,struct所以你不能这样做

struct Resolution {
    var width = 0
    var height = 0
}

struct MyStruct: Resolution { ... } // ERROR!
Run Code Online (Sandbox Code Playgroud)

所以你有两个选择。第一种是用aclass代替。第二是重构代码以使用协议。

所以,如果你有一些常用的方法,你可以这样做:


protocol PixelContainer
{
   var width: Int { get }
   var height: Int { get }
}

extension PixelContainer
{
    var count: Int { return width * height }
}

struct Resolution: PixelContainer
{
    var width = 10
    var height = 20
}

let numPixels = Resolution().count // Legal
Run Code Online (Sandbox Code Playgroud)

  • “从协议继承(如果这个词正确的话)”——在“Swift”中称为“一致”(或者在具有“接口”而不是“协议”的其他语言中称为“实现”)。 (6认同)