在前面,我们讲解了初始化时的一些常识和知识点,现在让我们来看看接下来的知识点:
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: "长方形",width: 1.5,height: 2.0)
println("\(twoByTwo.rectangle),\(twoByTwo.width),\(twoByTwo.height)")
// 打印出来的结果: Optional("长方形"),1.5,2.0
PS: 除了自动添加添加初始化方法之外,我们可以在结构体里给成员初始化某些值,Swift就会根据我们初始化的值来判断该成员是什么类型,就像例子中的width和height.
好了,Swift说到这里就基本上可以动手开发了,剩下的东西,就等着大家在项目中慢慢去挖掘~~之后的更新就是怎么做一些小Demo,大家再见~