gpt4 book ai didi

ios - Swift - 初始化类变量

转载 作者:行者123 更新时间:2023-11-29 00:52:50 30 4
gpt4 key购买 nike

我是 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”,我该如何初始化它?这正是我想要做的。

最佳答案

  1. 您不必再次初始化每个变量,因为每次您创建类、结构或枚举的新实例时,它们存储的属性都有初始值。

  2. 始终尝试提供默认值,而不是在初始化程序中设置值。如果一个类或结构为其所有属性提供默认值,Swift 会自动为您提供一个默认初始化程序。

    class Position {  
    var x: Float = 0
    var y: Float = 20
    }

    let position = Position() // nice!
  3. Position 类是一个非常简单的数据构造 - 感觉 Struct 类型更适合这里。

  4. 最终代码 - 使用 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com