【问题标题】:Swift Variable Initialization via Type Instance通过类型实例进行 Swift 变量初始化
【发布时间】:2015-11-05 14:24:30
【问题描述】:

我想在类的开头声明一些变量,并在以后和其他地方修改它们的值。我宁愿不为这些分配初始垃圾值以保持简洁。

我可以通过将基本类型的变量声明为类型的实例来声明它们吗?我的意思的一个例子是这样的:

class foo() {
    var isCool = Bool()
    var someInteger = Int()

    func gotTheFunc() -> Bool {
        isCool = true
        return isCool
    }
}

编译器允许我这样做,但在声明这样的类属性时,我真的可以/应该这样做吗?

谢谢!

【问题讨论】:

    标签: swift variables types initialization instance


    【解决方案1】:

    您应该在 init 方法中设置属性,然后您不必在声明时分配值。例如:

    init(someInt: Int, isCool: Bool) {
        self.isCool = isCool
        self.someInteger = someInt
    }
    

    self 关键字不是必需的,但可以明确哪个是类的属性。

    【讨论】:

    • 是的,我知道,但是如果我根本不希望属性具有初始值怎么办?
    【解决方案2】:

    你可以这样做,但是当你用基本类型初始化器声明变量时

    var isCool = Bool()
    var someInteger = Int()
    

    编译器会这样做

    var isCool = false
    var someInteger = 0
    

    如果要声明没有值的变量,则必须使用可选项

    var isCool : Bool?
    var someInteger : Int?
    

    但我会尽可能避免使用选项。

    旁注:类名应始终以大写字母开头

    class Foo {}
    

    【讨论】:

    • 哦,好的。所以 Swift 确实有基本类型的默认值。就可读性而言,这似乎是一种更好、更简洁的属性声明方式。除非我需要用某个值初始化这些变量,否则让编译器为您进行初始化是可以的。
    猜你喜欢
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2011-06-21
    • 1970-01-01
    相关资源
    最近更新 更多