【问题标题】:Class Instantiation in Apple Swift [duplicate]Apple Swift中的类实例化[重复]
【发布时间】:2014-08-24 00:40:58
【问题描述】:

为什么要实例化一个类,我必须用 let 将它作为一个常量,

class car {
   var type: Int?
   var wheels: Int?
}

let auto = car()

我也可以使用 var

var auto = car()

有什么区别?,谢谢

【问题讨论】:

    标签: swift


    【解决方案1】:

    一个常量只能被赋值或初始化一次:

    let constantAuto = car()
    constantAuto.type = 1       // changing properties is fine
    constantAuto.wheels = 4
    constantAuto = car()        // error - can't do this
    

    而一个变量可以多次赋值:

    var variableAuto = car()
    variableAuto.type = 1       // changing properties is fine here too
    // etc
    // need to reset:
    variableAuto = car()
    

    基本上,当您知道您只需要创建一次实例时,请使用let,这样编译器可以更高效地处理它创建的代码。

    【讨论】:

      【解决方案2】:

      如果你使用 let 你定义一个常量,而使用 var 你声明一个变量。

      "常量声明定义了常量名和初始化表达式的值之间的不可变绑定;常量的值设置后就不能改变了。也就是说,如果一个常量是用类对象初始化的,对象本身可以改变,但是常量名和它引用的对象之间的绑定不能。”

      来自https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/Declarations.html

      总结一下: 您可以更改变量引用的对象,但不能对常量执行此操作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        • 2020-07-20
        • 1970-01-01
        • 2017-02-09
        相关资源
        最近更新 更多