在Struct - Swift中使用"let"

ohy*_*yes 5 swift

我目前正在练习Swift语言iBook的例子.我对"让"的理解是我们用"让"来形成一个常数.一旦我们为它赋值,我们就不能再为它分配另一个值.像下面的代码:

let city="NY"
city="LA"  <--error (Cannot assign 'let' value city)
Run Code Online (Sandbox Code Playgroud)

但我在iBook上看到了这个让我困惑的例子:

struct Color{
let red=0.0, green=0.0, blue=0.0  //<---declare variables using "let" and assign value
init(red:Double,green:Double,blue:Double){
    self.red=red                  //<---assign value to variable again?
    self.green=green               
    self.blue=blue                
    }
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,它已将值分配给使用"let"的红色,绿色和蓝色.

为什么我们可以在init中再次为这三个变量赋值?

Kev*_*vin 11

let如果您没有在构造函数中自己初始化它们,则初始化将提供默认值.构造函数(init)很特别.在它们内部,您可以分配一个常量实例变量.实际上,如果您没有默认值,则必须为其分配.(这也适用于课程.)

感谢Qwerty Bob在文档中找到了这个

初始化期间修改常量属性

您可以在初始化期间的任何时刻修改常量属性的值,只要在初始化完成时将其设置为确定值即可.

摘录自:Apple Inc."The Swift Programming Language."iBooks.https://itun.es/us/jEUH0.l


Som*_*Guy 5

您可以在init过程中使用self关键字之前设置常量变量.在此之后,他们真正'恒定'.

您必须在使用self关键字之前执行此操作,就像将其传递给另一个对象一样,它可以依次调用依赖于该常量属性的您的方法