1

给定一个这样的结构实例:

struct Size {
    var width: Int
    var height: Int
}

是否有可能通过运行时将其扩展为:

struct Size {
    var width: Int
    var height: Int
    var depth: Int
}

向现有的 Size 结构实例添加一个新参数?

谢谢

4

2 回答 2

1

不,没有办法添加,但是您可以做的是以下内容,您可以将运行时可能需要的所有内容声明为可选,此外,如果您能够struct在运行时添加新属性,那么使用它?你将如何使用它们?

只是可选的值。

struct Size {
 var width: Int
 var height: Int
 var depth: Int? // this could be nil or Int 
}
于 2019-03-05T10:00:55.430 回答
0

这是斯威夫特。创建对象时,您应该了解对象的属性。

你必须选择:

  • 使depth属性可选。那么这个属性不必有任何值

    var depth: Int?
    
  • 或者给它默认值

    var depth: Int = 1
    

    使用第二个选项,您可以init使用默认值创建自定义

    struct Size {
        var width, height, depth: Int
    }
    
    extension Size {
        init(width: Int, height: Int) {
            self.init(width: width, height: height, depth: 1)
        }
    }
    
    Size(width: 1, height: 1)
    Size(width: 1, height: 1, depth: 1)
    
于 2019-03-05T10:50:07.517 回答