我不理解= red
struct Color {
let red, green, blue: Double
init(red: Double, green: Double, blue: Double) {
self.red = red
self.green = green
self.blue = blue
}
}
答案 0 :(得分:2)
在您的结构中self.red
是一个struct
实例,它会在您初始化时获得值。
考虑您在struct
let red, green, blue: Double
这意味着它们尚未初始化,因此您必须以init()
方式启动它:
init(red: Double, green: Double, blue: Double) {
self.red = red //when you will initialise struct self.red will get it's value
self.green = green //when you will initialise struct self.green will get it's value
self.blue = blue //when you will initialise struct self.blue will get it's value
}
现在,当您使用struct
新变量时,如:
let foo = Color(red: 1.0, green: 1.0, blue: 1.0)
你必须以这种方式给出它的实例值
Color(red: 1.0, green: 1.0, blue: 1.0)
你不能这样初始化它:
let test = Color()
这会给你一个错误。
但请记住:
为存储的属性分配默认值或设置其值时 初始化程序中的初始值,设置该属性的值 直接,不要求任何财产观察员。
这意味着如果您以这种方式为struct
的实例分配默认值:
struct Color {
let red : Double = 1.0
let green : Double = 1.0
let blue: Double = 1.0
}
您不需要初始化它,因为它们会自动初始化,您可以在没有初始化程序的情况下使用此方法:
let foo = Color()
它会给你结果{red 1, green 1, blue 1}
您可以通过这种方式为结构实例赋值:
struct Color {
var red : Double = 1.0
var green : Double = 1.0
var blue: Double = 1.0
}
var test = Color() //{red 1, green 1, blue 1}
test.red = 2.0 //{red 2, green 1, blue 1}
test.green = 2.0 //{red 2, green 2, blue 1}
test.blue = 2.0 //{red 2, green 2, blue 2}
答案 1 :(得分:0)
Swift 中的结构(struct
)与Class
的行为非常相似,并且可以包含方法,例如初始值设定项。
执行实例方法时,self
引用该实例。
除此之外,请参阅Apple Swift文档。
答案 2 :(得分:0)
变量红色,绿色和蓝色在结构中声明。并且您正尝试在init方法中访问它们。
所以self.red引用该特定结构对象的实例变量。
例如,如果您创建两个Color结构实例
var color1 = Color(26,120,180);
var color2 = Color(160,120,180);
println(color1.red);//will print 26
println(color2.red);//will print 160
在上面的例子中:
第1行:它会调用init()方法来初始化此方法中的结构调用self指的是结构Color的实例color1。
第2行:它会调用init()方法初始化此方法中的结构调用self指的是结构Color的实例color2。
数据封装
希望很清楚。如果有任何疑问,请告诉我。