Swift 结构:在运行时添加新参数
Swift Struct: adding new parameters at runtime
给定一个这样的结构实例:
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
}
这是Swift。在创建对象时,您应该了解对象的属性。
您必须选择:
使 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)
给定一个这样的结构实例:
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
}
这是Swift。在创建对象时,您应该了解对象的属性。
您必须选择:
使
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)