符号概念
引入
Swift 中的引入关键字是 import
。
值得注意的是,这个语句可以用来引入任何 Objective-C/C 的库到 Swift 程序中来。
分号
Swift 不要求在每行语句的结尾使用分号。
但当你在同一行书写多条语句时,必须用分号隔开。
空格
Swift 并不是像 C/C++,Java 那样完全忽视空格,Swift 对空格的使用有一定的要求,但是又不像 Python 对缩进的要求那么严格。
在 Swift 中,运算符不能直接跟在变量或常量的后面。例如下面的代码会报错:
|
|
第二个报错比较奇怪,这是因为Swift认为到1+这个语句就结束了,2就是下一个语句了。只有这样写才不会报错:
|
|
数据类型
数据类型基础
内置数据类型:语言中内置了以下的几种数据类型:
- 整数/无符号整数:Int/Uint;
- 浮点数:Double/Float;
- 布尔值:Bool;
- 字符串/字符:String/Character;
- 可选类型:Optional。表示有值或没有值的情况;
类型别名:可以用下面的语法定义类型别名:
|
|
类型安全:
- Swift 是一个类型安全(type safe)的语言。
- 由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。
类型推断:
- 如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型;
- 通过类型推断声明变量类型的关键词是
let
、var
;
变量声明:
|
|
可选类型
Optional 的数据类型有以下两种声明方式,是等价的:
|
|
Optional 是一个含有两种情况的枚举,None
和 Some(T)
,用来表示可能有或可能没有值。
可选类型中的 nil 类型,类似于 Objective-C
中指针的 nil
值,但是 nil
只对类有用,而可选类型对所有的类型都可用,并且更安全。
强制解析:
- 当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(!)来获取值。这个感叹号表示"我知道这个可选有值,请使用它。"
- 这被称为可选值的强制解析(forced unwrapping)。
自动解析:
- 可选变量在声明的时候使用
!
而不是?
,这样变量就会自动解析。
下面是一个实例程序以及输出内容:
|
|
可选绑定:
- 使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。
- 可选绑定可以用在
if
和while
语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。
下面是一个使用可选绑定的例子:
|
|
常量/变量/字面量
常量用 let
声明,变量用 var
声明。
字面量同 C++,布尔值除了 true
/false
还有 nil
作为第三个值。
控制流
运算符
除了 C++ 中已经有的 “算术运算符”、“比较运算符”、“逻辑运算符”、“位运算符”、“赋值运算符” 之外,Swift 中提供了一个特殊的运算符 “区间运算符”。
Swift 提供了两个区间的运算符。
运算符 | 实例 |
---|---|
闭区间运算符 | 1…5 区间值为 1, 2, 3, 4 和 5 |
半开区间运算符(左闭右开) | 1..< 5 区间值为 1, 2, 3, 和 4 |
以下为区间运算的简单实例:
|
|
条件语句
if;else;三元运算。
循环语句
除了 for-in
/for
/while
/repeat...while
/switch...case
之外。
Swift 针对 switch 提供了一个 fallthrough
关键词作为优化:
- Swift 的 switch 语句中的一个 case 执行完之后,默认会结束语句块;
- 若想要继续执行下面的 case,需要用
fallthrough
语句继续后面的流程;