微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐