斯威夫特:什么时候应该使用“var”而不是“let”?

正如Apple文档所说:

Use let to make a constant and var to make a variable. The value of a constant doesn’t need to be known at compile time, but you must assign it a value exactly once. This means you can use constants to name a value that you determine once but use in many places.

让我们考虑一下课程:

class A {
    var a = [String]()
}

由于数组a是可变的,因此它是通过var定义的.但是如果我们考虑B类,A的实例是属性呢?

class B {
    let b = A()
}

即使b是可变的,让关键字也可以,因为引用不会被改变.另一方面,var也可以,因为b的内容可以改变.我应该在这个例子中选择什么 – let或var?

最佳答案
尽可能使用let.必要时使用var.使事情不可变会使很多错误成为不可能,所以它应该是你的默认选择.尽可能在init中设置所有值,永远不要更改它们.同样,你应该尽可能使用struct,并在必要时进行分类(尽管根据我的经验,这比使用let更难实现).

所以在你的例子中,如果你在初始化期间不能设置A.a,那么是的,它应该是var.但是在你的例子中没有必要为B.b.使用var. (在任何一个例子中都没有理由使用课程,至少在你提出问题的方式上.)

转载注明原文:斯威夫特:什么时候应该使用“var”而不是“let”? - 代码日志