没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
19页
阅读完《the swift programming language 中文版》,对swift语言有了初步的认识。在特点是:swift既是项目开发的编程语言,又有脚本语言的特点;在学习上:swift可以在xcode的playground进行编写,所见即所得,非常适合语法学习。 对于swift语言,个人认为就是"站在巨人的肩膀上"的一门语言,及众家之所长。只要熟悉一门主流的编程语言,学习swift的语法都不会太困难。swift和Java语言在某些语法和关键字上面甚是相似,因此在学习时困难不大。当然,对于熟悉C++的同学可以进行类比。 同时,swift是一门新生语言,大部分时代潮流技术也在其中,而且有自己独有的一些技巧在其中,非常值得学习。
资源推荐
资源详情
资源评论
文章目录
1. 读后概述
2. 语法笔记
2.1 说明
2.2 基础类型
2.3 运算符
2.4 字符与字符串
2.4 控制流
2.5 函数
2.6 闭包
2.7 枚举、结构体、类
2.8 类的构造与析构
2.9 属性监听器
2.10 类的继承
2.11 扩展
2.13 协议
2.10 泛型
3. 总结
1. 读后概述
阅读完《the swift programming language 中文版》,对 swift 语言有了初步的认识。在特点是:
swift 既是项目开发的编程语言,又有脚本语言的特点;在学习上:swift 可以在 xcode 的
playground 进行编写,所见即所得,非常适合语法学习。
对于 swift 语言,个人认为就是"站在巨人的肩膀上"的一门语言,及众家之所长。只要熟悉
一门主流的编程语言,学习 swift 的语法都不会太困难。swift 和 Java 语言在某些语法和关键
字上面甚是相似,因此在学习时困难不大。当然,对于熟悉 C++的同学可以进行类比。
同时,swift 是一门新生语言,大部分时代潮流技术也在其中,而且有自己独有的一些技巧
在其中,非常值得学习。
2. 语法笔记
2.1 说明
编程语言都是相通的,因此对于基础的语法都是一样。下面主要是对不同的且重要的语法进
行了做了笔记,对于已知或类似的语法没有进行细致的说明。
2.2 基础类型
1)变量与常量
swift 用 let 定义常量,用 var 定义变量。对于数据类型则 swift 自行推断(类型推倒在 C++中
相当于 auto 这个类型占位符一样)。常量在设定后,将不能再更改它的值,变量则可以。
如果需要指定类型,则使用类型注解
var welcomeMessage: String
// 一般不需要写类型注解, 在声明常量或者变量的时候赋了一个初始值,Swift 可以推断出
这个常量或者变量的类型
常量和变量名可以包含几乎所有的字符,包括 Unicode 字符:
let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"
值得注意的是:
a)在实际项目开发中,应该先定义为 let 类型,如果需要修改时,再修改类型为 var
b)let 指的是指向的地址不可修改,但是该对象内容是可修改的(常量不可修改)
2)元组
swift 提供了元组:多个值组合成一个复合值。
元组内的值可以是任意类型,并不要求是相同类型。有了元组,函数的返回值就可以返回多
个不同类型的值。
// 元组定义
// 1. 字面量定义
var tuple1 = (1, 2.0, "string", true)
// 2. 带参数标签的定义
var tuple2 = (parameter1:int, parameter2:double parameter3:String)
tuple2 = (1, 2.0, "string")
let tuple3 = (parameter1: 1, parameter2: "string")
// 元组取值
// 1. 序列号取值
tuple.0, tuple.1, tuple.2
// 2. 标签取值
tuple2.parameter1
tuple2.parameter2
3)可选类型
让程序更安全!
在 OC 中,有一种写法。
NSString *str = [obj getSomeStr] ?: @"";
为了保证 str 不是 nil,在赋值时确定一下。swift 提供了可选类型,来处理可能缺失的情况。
注意可选类型是一个类型。
var surveyAnswer: String? = "123"
// surveyAnswer 可选值为"123""
// 注意:可选类型为类型后面+?
构造器返回值可选值类型
let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// 因为该构造器可能会失败,convertedNumber 被推测为类型 "Int?", 或者类型 "optional
Int"
// 构造器就是构造函数, 在 C++与 Java 中的叫法
使用 if 或者 while 可以进行判断是否有值。这个过程又叫做可选绑定
// 强制解包
let value = surveyAnswer!
// 强制解包如果没值,则会 crash,因此使用强制解包要保证有值
// 可选绑定
// if 语法在后面介绍
if let newstring = surveyAnswer {
}
// 隐式展开
// 在确定有值的时候,可以直接解包
var a:Int! = 10
var b:Int = a
// 疑问:已经确定有值,还用可选类型干嘛?如:
// var a:Int = 10
// 解答:用可选类型是因为可以使用 nil,如果不是可选类型则不能使用 nil。
4)值类型与引用类型
值类型:当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。
引用类型:增加引用计数,不进行拷贝。
5)其他
5.1)类型别名:
swift 中不使用 typedef , 且有等号。
typealias AudioSample = UInt16
5.2)分号:
在 swift 中不用使用分号, 但是在同一行的两个语句使用分号.
2.3 运算符
1)空合运算符
如果 a 包含一个值就进行解包,否则就返回一个默认值 b
a != nil ? a! : b
// a 必须是可选类型
//
2)区间运算符
Swift 提供了几种方便表达一个区间的值的_区间运算符_。
闭区间运算符(a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不
能超过 b。
半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。
单侧区间运算符(a.../...b)可以表达往一侧无限延伸的区间
2.4 字符与字符串
Swift 的 String 和 Character 类型提供了一种快速且兼容 Unicode 的方式来处理代码中的
文本内容, 因此可以用任何字符。有趣的是,变量或者常量命名可以采用 emoji 表情或者汉
字。
for character in "Dog!🐶" {
print(character)
}
// D
// o
// g
// !
// 🐶
在书中介绍了 String 是基于 Unicode 标量 建立的. 因此需要了解一下 Unicode 中的码点,
utf-8 等概念. 在说到 count 和 objective-c 的 length 返回的值不一样, 也是由于采取的编码格
剩余18页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1906
- 资源: 3975
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功