Swift学习心得

Swift一出,高级工程师也变菜鸟。干这行的,不保持学习的心态,就会被时代淘汰。

花了几天时间把《The Swift programming language》粗略看了一遍,了解下语法。发现这们语言真是集大成者,很多主流语言的特性都被吸收了。看这本语法书,总会有一种似曾相识的感觉,让我想起了Python, Go, ObjC, C++, C#等各门语言。

相比于ObjC,它显得非常简洁。ObjC变量名、方法名都很长。而Swift在保证可读性的前提下,做了很多工作来确保简洁性:类型推测,函数式编程,泛型等等。在安全性上也做了很多工作:Optional types的引入,继承自ObjC的ARC。苹果宣称它很快,比ObjC快很多,比起脚本语言就更不用说了。这样看来,它会是一门对开发者用户友好的语言,至少比ObjC好。

下面是一些读书笔记。

数据类型

常量和变量

数据类型:

值类型和引用类型

Int, Float, Double, Bool, String, Tuple, Optionals。

Optionals是一个重点,它表示变量在某些时刻可能是nil。是类型安全方面的重要措施。?和!这两个符号含义丰富。

1, var string1 : String?
2, var string2 : String!
3, print(string1!)
4, print(string2)

Array, Dicionary: 与NSArray和NSDictionary不同,他们只能是同一种类型变量的集合。

enum, structure, class

类型转换: is, as, as?

Control Flow

for loops: ..和...的含义

switch/case非常强大,它不局限于整型,还可以做range matching和value binding,支持where子句

labeled statement

函数

default value, external parameter name(#), Variadic parameters, function type, In-Out Parameters

函数可以作为参数和返回类型。

函数可以嵌套定义。

closure

{ (parameters) -> return type in
    statements
}

Inferring Type From Context, Shorthand Argument Names

Property

Stored property, computed property

property observer: willSet, didSet

Estensions and protocols, delegations

这些概念跟ObjC基本一致。

泛型和操作符重载,自定义操作符

借鉴自C++。