Swift基础语法: 32 - Swift的构造过程中常量属性的修改, 默认构造器

在前面, 我们讲解了初始化时的一些常识和知识点, 现在让我们来看看接下来的知识点:


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, 大家再见~

posted @ 2015-03-24 19:37  背着吉他去流浪  阅读(258)  评论(0编辑  收藏  举报