Swift语法笔记(一)

参考学习文档:Swift 中文手册(3.0)

基础部分

常量和变量

常量的值一旦设定就无法改变

变量的值可以随意修改

let 声明常量
var 声明变量

类型标注

1
2
3
4
//标注String类型变量
var str : String = "HelloWord"

var str = "Hello"

swift从初始值推断他们的类型,称为类型推断。

常量和变量的命名

常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。

输出变量和常量

字符串插值

1
2
3
let word = "Word"
print("Hello /(word)")
//Hello Word

注释

其结构与其他编程语言差不多

1
//注释
1
2
3
/*块注释
块注释
*/
1
2
3
/*注释
/*嵌套注释*/
注释*/

分号

swift不强制要求每个语句后面都加上分好

但是如果需要在同一行添加多条语句,必须在每个语句之间加上;

整数Int

Swift提供8,16,32,64位有符号(Int8)或无符号(Uint8)整数类型,声明时只需要用Int或UInt,长度与当前平台的长度相同。

注意:
尽量不要使用UInt,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用Int,即使要存储的值已知是非负的。统一使用Int可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断,请参考类型安全和类型推断。
(来自文档)

数值型字面量

  • 一个十进制数,没有前缀
  • 一个二进制数,前缀是0b
  • 一个八进制数,前缀是0o
  • 一个十六进制数,前缀是0x

下面的所有整数字面量的十进制值都是17:

1
2
3
4
let decimalInteger = 17
let binaryInteger = 0b10001 // 二进制的17
let octalInteger = 0o21 // 八进制的17
let hexadecimalInteger = 0x11 // 十六进制的17

或者可以这么理解:使用允许范围内的数值类型表示数字,swift都可以识别。并且可以允许在数值内添加多余的零并且包含下划线,并不会影响字面量,也就是数值。

类型别名

类型别名(type aliases)就是给现有类型定义另一个名字。你可以使用typealias关键字来定义类型别名。

元组

元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。

一个超级数组,数组内可以组合任意不同类型。

  • 还可以将元组分解成单独的变量和常量,正常去使用:
1
2
3
4
5
6
7
let http404Error = (404, "Not Found")
// http404Error 的类型是 (Int, String),值是 (404, "Not Found")
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// 输出 "The status code is 404"
print("The status message is \(statusMessage)")
// 输出 "The status message is Not Found"
  • 忽略不需要的部分用_来标记:
1
2
3
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// 输出 "The status code is 404"
  • 通过下标来使用元组中的单个元素:

就像普通数组一样去使用

1
2
3
4
print("The status code is \(http404Error.0)")
// 输出 "The status code is 404"
print("The status message is \(http404Error.1)")
// 输出 "The status message is Not Found"
  • 定义元组的时候可以给元组中的单个元素命名,通过名字来使用元素的值:
1
2
3
4
5
let http200Status = (statusCode: 200, description: "OK")
print("The status code is \(http200Status.statusCode)")
// 输出 "The status code is 200"
print("The status message is \(http200Status.description)")
// 输出 "The status message is OK"

可选类型

可选类型用来代表这个值可能有晕可能没有例如Int?,代表这个Int可能有值,也可能没有值,但是也不会包含除Int以外的值

nil

代表这个变量或者常量的值缺失,也就是没有值

if 语句以及强制解析

如果确定可选值包含值,可以使用ifnil来获取值,称为可选值得强制解析

1
2
3
4
if convertedNumber != nil {
print("convertedNumber has an integer value of \(convertedNumber!).")
}
// 输出 "convertedNumber has an integer value of 123."

未完待续