Swift 基础语法

416 阅读3分钟

一、基础语法

1、常量和变量

  • 常量(let):常量的值一旦设定就不能改变。
    1. 它的值不要求在编译时期确定,但使用之前必须赋值1次
    2. 只能赋值1次
  • 变量(var):变量的值可以随意更改

2、标识符

  • 标识符(比如常量名、变量名、函数名)几乎可以使用任何字符
  • 标识符不能以数字开头,不能包含空白字符、制表符、箭头等特殊字符

3、常见数据类型

  • 值类型
    1. 枚举:Optional
    2. 结构体:Bool、Int、Float、Double、Character、String、Array、Dictionary、 Set
  • 引用类型

4、注释

5、字面量

6、类型转换

7、元组

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

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”

//如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记:
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// 输出“The status code is 404”

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”

8、类型别名

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

typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min
// maxAmplitudeFound 现在是 0

9、布尔值

Swift 有一个基本的布尔(Boolean)类型,叫做 Bool。布尔值指逻辑上的值,因为它们只能是真或者假。Swift 有两个布尔常量,true 和 false

10、基本运算符

1. 赋值运算符

  • 赋值运算符(a = b),表示用 b 的值来初始化或更新 a 的值

2. 算术运算符

  • 加法(+):加法运算符也可用于 String 的拼接
  • 减法(-)
  • 乘法(*)
  • 除法(/)

3. 组合赋值运算符

  • 其他运算符和赋值运算(=)组合的组合赋值运算符 var a = 1 a += 2

    //表达式 a += 2 是 a = a + 2 的简写

4. 比较运算符

  • 等于(a == b)
  • 不等于(a != b)
  • 大于(a > b)
  • 小于(a < b)
  • 大于等于(a >= b)
  • 小于等于(a <= b)
  • Swift 也提供恒等(===)和不恒等(!==)这两个比较符来判断两个对象是否引用同一个对象实例

5. 三元运算符

------> 问题 ? 答案 1 : 答案 2

6. 空合运算符

  • 空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解包,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。

7. 区间运算符

  • 闭区间运算符(a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。
  • 半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。
  • 闭区间操作符有另一个表达形式,可以表达往一侧无限延伸的区间 let range = ...5 range.contains(7) // false range.contains(4) // true range.contains(-1) // true

8. 逻辑运算符

  • 逻辑非(!a)
  • 逻辑与(a && b)
  • 逻辑或(a || b)

9.恒等运算符

  1. 判定两个常量或者变量是否引用同一个类实例有时很有用。为了达到这个目的,Swift 提供了两个恒等运算符
    • 相同(===)
    • 不相同(!==)
       if tenEighty === alsoTenEighty {
           print("tenEighty and alsoTenEighty refer to the same VideoMode instance.")
       }
       // 打印 "tenEighty and alsoTenEighty refer to the same VideoMode instance."

请注意,“相同”(用三个等号表示,===)与“等于”(用两个等号表示,==)的不同。“相同”表示两个类类型(class type)的常量或者变量引用同一个类实例。“等于”表示两个实例的值“相等”或“等价”,判定时要遵照设计者定义的评判标准。