给定一个这样的结构实例:
struct Size {
var width: Int
var height: Int
}
是否有可能通过运行时将其扩展为:
struct Size {
var width: Int
var height: Int
var depth: Int
}
向现有的 Size 结构实例添加一个新参数?
谢谢
不,没有办法添加,但是您可以做的是以下内容,您可以将运行时可能需要的所有内容声明为可选,此外,如果您能够struct在运行时添加新属性,那么使用它?你将如何使用它们?
只是可选的值。
struct Size {
var width: Int
var height: Int
var depth: Int? // this could be nil or Int
}
这是斯威夫特。创建对象时,您应该了解对象的属性。
你必须选择:
使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)