在前面, 我们讲解了初始化时的一些常识和知识点, 现在让我们来看看接下来的知识点:
1.构造过程中常量属性的修改
只要在构造过程结束前, 常量的值能确定, 你可以在构造过程中的任意时间点修改常量属性的值.
class SurveyQuestion {
let text: String
var response: String?
init(text: String) {
self.text = text
}
func ask() {
println(text)
}
}
let beetsQuestion = SurveyQuestion(text: "How about beets?")
beetsQuestion.ask()
// 打印出来的结果: How about beets?
beetsQuestion.response = "I also like beets. (But not with cheese.)"
println(beetsQuestion.response)
// 打印出来的结果: Optional("I also like beets. (But not with cheese.)")
PS: 注意一下, 对于某个实例来讲, 它的常量属性只能定义在本身的初始化中, 不能在继承与它的子类中进行修改.
2.默认构造器
在Swift中, 我们在定义结构体时, 如果不加初始化方法, 那么Swift会自动给我们结构体中的每一个成员属性默认添加一个初始化, 比如:
class ShoppingListItem {
var name: String?
var age = 18
var purchased = false
}
var item = ShoppingListItem()
item.name = "xiaoming"
println("My name is (item.name), age is (item.age)")
// 打印出来的结果: My name is Optional("xiaoming"), age is 18
PS: 例子中的name属性, 我们是没有给它定义任何东西的, 但我们在类里面给它添加了一个可选符号, 一旦添加了这个可选符号时, Swift会判断我们有没有给它初始化值, 如果没有, 它就会返回nil.
在结构体中我们也是如此, 比如:
struct Size {
var rectangle: String?
var width = 0.0, height = 0.0
}
let twoByTwo = Size(rectangle: "长方形", 1.5, height: 2.0)
println("(twoByTwo.rectangle), (twoByTwo.width), (twoByTwo.height)")
// 打印出来的结果: Optional("长方形"), 1.5, 2.0
PS: 除了自动添加添加初始化方法之外, 我们可以在结构体里给成员初始化某些值, Swift就会根据我们初始化的值来判断该成员是什么类型, 就像例子中的width和height.
好了, Swift说到这里就基本上可以动手开发了, 剩下的东西, 就等着大家在项目中慢慢去挖掘~~之后的更新就是怎么做一些小Demo, 大家再见~