我是 Swift 的新手。我在声明类(class)时遇到问题。我有以下 -
class position_
{
var x: Float = 0
var y: Float = 0
}
class node_
{
var label: String = nil
var coordinates: position_
}
现在我可以在 position_
类中创建一个 initializer init()
,就像这样 -
class position_
{
var x: Float
var y: Float
init()
{
x = 0
y = 0
}
}
无论如何我可以在 node_ class
中使用这个初始化程序吗?因为,如果没有 init()
函数,就无法在 node_ class
中初始化坐标变量。或者有吗?
我很难相信 Swift 会要求我在 node_ class
中再次初始化每个 position_
变量。换句话说,有没有比下面的更好的选择?
class node_
{
var label: String
var coordinates: position_
init()
{
name = nil
coordinates.x = 0
coordinates.y = 0
}
}
此外,如果我想创建另一个变量,例如 UIButton
类型的“b”,我该如何初始化它?这正是我想要做的。
最佳答案
您不必再次初始化每个变量,因为每次您创建类、结构或枚举的新实例时,它们存储的属性都有初始值。
始终尝试提供默认值,而不是在初始化程序中设置值。如果一个类或结构为其所有属性提供默认值,Swift 会自动为您提供一个默认初始化程序。
class Position { var x: Float = 0 var y: Float = 20 } let position = Position() // nice!
Position 类是一个非常简单的数据构造 - 感觉 Struct 类型更适合这里。
最终代码 - 使用 UIButton
struct Position { var x: Float = 0 var y: Float = 20 } class Node { var label = "" // label is inferred to be of type String var coordinates = Position() var button = UIButton(type: .InfoDark) } let myNode = Node()
关于ios - Swift - 初始化类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935737/