GVKun编程网logo

Swift 2.0学习笔记(Day 42)——构造函数调用规则(构造函数调用格式)

2

本文将分享Swift2.0学习笔记的详细内容,并且还将对Day42——构造函数调用规则进行详尽解释,此外,我们还将为大家带来关于2008Swift2.0学习笔记(Day33)——属性观察者、Swift

本文将分享Swift 2.0学习笔记的详细内容,并且还将对Day 42——构造函数调用规则进行详尽解释,此外,我们还将为大家带来关于2008Swift 2.0学习笔记(Day 33)——属性观察者、Swift 2.0学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?、Swift 2.0学习笔记(Day 11)——数据类型那些事儿?、Swift 2.0学习笔记(Day 12)——说几个特殊运算符的相关知识,希望对你有所帮助。

本文目录一览:

Swift 2.0学习笔记(Day 42)——构造函数调用规则(构造函数调用格式)

Swift 2.0学习笔记(Day 42)——构造函数调用规则(构造函数调用格式)

原创文章,欢迎转载。转载请注明:关东升的博客

在构造函数中可以使用构造函数代理帮助完成部分构造工作。类构造函数代理分为横向代理和向上代理,横向代理只能在发生在同一类内部,这种构造函数称为便利构造函数。向上代理发生在继承的情况下,在子类构造过程中,要先调用父类构造函数初始化父类的存储属性,这种构造函数称为指定构造函数。

构造函数调用规则

Person和Student类示例: class Person { var name: String var age: Int func description() -> String { return "\(name) 年龄是: \(age)" } convenience init () { //便利构造函数 self.init(name: "Tony") self.age = 18 } convenience init (name: String) { //便利构造函数 self.init(name: name,age: 18) } init (name: String,age: Int) { //指定构造函数 self.name = name self.age = age } } class Student: Person { var school: String init (name: String,age: Int,school: String) { //指定构造函数 self.school = school super.init(name: name,age: age) } convenience override init (name: String,age: Int) {//便利构造函数 self.init(name: name,age: age,school: "清华大学") } } let student = Student() print("学生: \(student.description())")

构造函数之间的调用形成了构造函数链,如图所示。

Swift限制构造函数之间的代理调用的规则有3条,如下所示。

指定构造函数必须调用其直接父类的的指定构造函数。从图可见,Student中的④号指定构造函数调用Person中的③号指定构造函数。

  • 便利构造函数必须调用同一类中定义的其他构造函数。从图可见,Student中的⑤号便利构造函数调用同一类中的④号便利构造函数,Person中的①号便利构造函数调用同一类中的②号便利构造函数。

  • 便利构造函数必须最终以调用一个指定构造函数结束。从图可见,Student中的⑤号便利构造函数调用同一类中的④号指定构造函数,Person中的②号便利构造函数调用同一类中的③号指定构造函数。

欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php

2008Swift 2.0学习笔记(Day 33)——属性观察者

2008Swift 2.0学习笔记(Day 33)——属性观察者

原创文章,欢迎转载。转载请注明:关东升的博客

为了监听属性的变化,Swift提供了属性观察者。属性观察者能够监听存储属性的变化,即便变化前后的值相同,它们也能监听到。

属性观察者主要有以下两个:

  • willSet :观察者在修改之前调用。
  • didSet :观察者在修改之后立刻调用。

属性观察者的语法格式如下:

面向对象类型 类型名 { ... var 存储属性: 属性数据类型 = 初始化值 { willSet(新值) { //定义willSet观察者。“新值”是传递给willSet观察者的参数,它保存了将要替换原来属性的新值 ... } didSet(旧值) { //定义didSet观察者。“旧值”是传递给didSet观察者的参数,它保存了被新属性替换的旧值。 ... } } }

属性观察者的语法格式比计算属性要混乱。

属性观察者可以在类和结构体中使用,不能在枚举中使用。

示例代码如下:

class Employee { var no: Int = 0 var name: String = "Tony" { willSet(newNameValue) { //定义name属性的willSet观察者,newNameValue是由我们分配的传递新值的参数名 print("员工name新值:\(newNameValue)") } didSet(oldNameValue) { //定义name属性的didSet观察者,oldNameValue是由我们分配的传递旧值的参数名 print("员工name旧值:\(oldNameValue)") } } var job: String? var salary: Double = 0 var dept: Department? } struct Department { var no: Int = 10 { willSet { //定义no属性的willSet观察者,注意这里没有声明参数,但是我们可以在观察者内部使用newValue print("部门编号新值:\(newValue)") } didSet { //定义no属性的didSet观察者,注意这里也没有声明参数,但是我们可以在观察者内部使用oldValue print("部门编号旧值:\(oldValue)") ⑫ } } var name: String = "RESEARCH" } var emp = Employee() emp.no = 100 emp.name = "Smith" ⑬ var dept = Department() dept.no = 30 ⑭

上述代码运行结果如下:

员工name新值:Smith 员工name旧值:Tony 部门编号新值:30 部门编号旧值:10

欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php

Swift 2.0学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?

Swift 2.0学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?

原创文章,欢迎转载。转载请注明:关东升的博客
运算符是用于执行程序代码运算,会针对一个或一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。那么“+、-、*、/”是运算符。
运算符有哪几种呢?
在Swift语言中主要的运算符包括算术、关系、逻辑、位运算符等。
“ +、-、*、/ ”是算术运算符中的二元运算符,一元运算符是是-、++和--。

  • 二元运算符:

+ 加 求和,还可用String类型,进行字符串连接操作
- 减 求差
* 乘 求积
/ 除 求商
% 取余 求余数
  • 一元运算符:
- 取反符号 取反运算
++ 自加一 先取值再加一,或先加一再取值
-- 自减一 先取值再减一,或先减一再取值


欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息


更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.PHP

Swift 2.0学习笔记(Day 11)——数据类型那些事儿?

Swift 2.0学习笔记(Day 11)——数据类型那些事儿?



原创文章,欢迎转载。转载请注明:关东升的博客

在我们学习语言时都会学到这种语言的数据类型,在Swift中数据类型有那些呢?整型、浮点型、布尔型、字符、字符串这些类型是一定有的,其中集合、枚举、结构体、类也是Swift中的数据类型。元组是Swift中特有的。

其他那些类型我们可能多少知道些或是听说过。元组是在Swift中有的,它是什么呢?

它是一种数据结构,在数学中应用广泛。在计算机科学中,元组是关系数据库中的基本概念,元组表中的一条记录,每列就是一个字段。因此在二维表里,元组也称为记录。

现在使用Swift语法表示Student元组就是:

第一种写法

("1001","张三",30,90)

第二种写法

(id:"1001",name:"张三",english_score:30,chinese_score:90)


欢迎关注关东升新浪微博@tony_关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com

智捷课堂论坛网站:http://51work6.com/forum.PHP

Swift 2.0学习笔记(Day 12)——说几个特殊运算符

Swift 2.0学习笔记(Day 12)——说几个特殊运算符



原创文章,欢迎转载。转载请注明:关东升的博客

除了一些常用的运算符,还有一些其他的:

引用号(.):实例调用属性、方法等操作符。

问号(?):用来声明可选类型。

感叹号(!):对可选类型值进行强制拆封。

箭头(->):说明函数或方法返回值类型。

冒号运算符(:):用于字典集合分割“键值”对。

……

欢迎关注关东升新浪微博@tony_关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息


更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com

智捷课堂论坛网站:http://51work6.com/forum.PHP

今天关于Swift 2.0学习笔记Day 42——构造函数调用规则的分享就到这里,希望大家有所收获,若想了解更多关于2008Swift 2.0学习笔记(Day 33)——属性观察者、Swift 2.0学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?、Swift 2.0学习笔记(Day 11)——数据类型那些事儿?、Swift 2.0学习笔记(Day 12)——说几个特殊运算符等相关知识,可以在本站进行查询。

本文标签: