我看到代码来自swift 2.0 init
方法,Square是来自NamedShape
的子类,
1.我是否需要添加self.property
或仅使用self
?
2.它是否意味着super.init(name: name)
使用self
之前的属性,以及之后的属性?
class Square : NamedShape {
init(sideLength: Double, name: String) {
self.sideLength = sideLength
super.init(name: name)
numberOfSides = 4 //Add self. or not
}
}
和
init(sideLengt: Double, name: String) {
sideLength = sideLengt //without self. , is it right?
super.init(name: name)
self.numberOfSides = 4
}
答案 0 :(得分:2)
您可以不使用self,但字段变量需要与外部变量不同。
简单,字段中的变量是常量语句(let
)init(sideLength: Double, name: String)
sideLenght
,此行中的name
是常量变量,因为您无法设置新的价值。
PS。 swift中的let
与其他语言中的const
相同
实施例
实现的正确方法是使用self.
,因为在这种情况下,我们告诉编译器在我们的类中设置变量。
其他示例现在设置不带self.
的变量,查看下一个图像,我们可以不使用self,因为它在变量之外。
答案 1 :(得分:1)
当您引用self.name
在init之外时,您使用关键字name
。如果你使用相同的参数“name”作为你的init参数,那么更多的是要认识到你所指的name
这是一个例子
var name : String
init(name : String)//here we have the same name with the value above
{
self.name = name//self.name is the variable outside of the init and now we are making that value the same with the value used in init
}