初始化 - 为什么我必须使用self来设置变量的值?

时间:2017-03-14 04:03:31

标签: swift

我正在使用Swift中的初始化程序,并且想知道为什么在每个变量的名称之前需要self,如下所示:

import UIKit

class Vehicle {


var model:String
var speed:Int
var year:Int

init(model: String, speed: Int, year: Int) {

    self.model = "null"
    self.speed = 0
    self.year = 0000


}
}

但在这样的情况下不需要init,其中init没有参数:

import UIKit

class Vehicle {


var model:String
var speed:Int
var year:Int

init() {

    model = "null"
    speed = 0
    year = 0000


}
}

两种不同的设置之间是否有区别?如果是,那么在每种情况下应该使用哪种?谢谢。

1 个答案:

答案 0 :(得分:3)

如果没有self,Swift应该知道你的意思是实例变量model而不是同名参数?

只有在外部作用域中具有与变量同名的局部变量(或参数)时,才需要执行此操作。

如果你真的试图使用这些参数(你的代码示例只是忽略它们),这可能会更明显一些。然后你会写一些类似

的东西
model = model
speed = speed
year = year

你必须承认看起来有问题。