原创

Swift基础(一)

温馨提示:
本文最后更新于 2026年01月16日,已超过 16 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1 常量和变量

1.1 常量(let)

1.1.1 常量的定义与特点

在 Swift 中,常量使用 let 关键字声明,一旦赋值后,值不可更改。

let maxCount = 10

特点:

  • 只能赋值一次
  • 编译期保证不可修改
  • 提升代码安全性和可读性
  • Swift 官方 强烈推荐优先使用常量
let name = "Swift"
// name = "iOS" ❌ 编译错误

1.2 变量(var)

1.2.1 变量的定义与特点

变量使用 var 关键字声明,值可以在运行过程中修改。

var score = 60
score = 80

特点:

  • 可以多次修改
  • 用于状态变化的场景
  • 不必要的 var 会降低代码安全性

1.3 常量与变量的使用建议

1.3.1 Swift 官方最佳实践

能用 let 就不要用 var

let width = 100
let height = 200
let area = width * height

2 类型安全和类型推断

2.1 类型安全(Type Safety)

2.1.1 什么是类型安全

Swift 是一门 强类型语言,变量类型一旦确定,就不能随意改变。

var age: Int = 18
// age = "18" ❌ 类型不匹配

优点:

  • 编译期发现错误
  • 减少运行时崩溃
  • 提高代码稳定性

2.2 类型推断(Type Inference)

2.2.1 自动推断变量类型

Swift 可以根据初始值自动推断类型。

let name = "Tom"     // String
let count = 10      // Int
let price = 9.9     // Double

不需要显式写类型,但类型已确定。

2.3 显式类型声明

2.3.1 何时需要显式类型

在以下情况建议明确声明类型:

  • 没有初始值
  • API 设计
  • 提高可读性
var total: Int
total = 100

3 print函数

3.1 print 的基本用法

3.1.1 输出内容到控制台

print 用于将内容输出到控制台,常用于调试。

print("Hello Swift")

3.2 输出多个值

3.2.1 同时打印多个参数

let name = "Alice"
let age = 20
print(name, age)

输出:

Alice 20

3.3 字符串插值

3.3.1 使用 ( ) 拼接变量

print("我的名字是 \(name),年龄是 \(age)")

4 字符串操作

4.1 字符串定义

4.1.1 使用 String 类型

let greeting: String = "Hello"

或使用类型推断:

let message = "Welcome to Swift"

4.2 字符串拼接

4.2.1 使用 + 运算符

let first = "Hello"
let second = "Swift"
let result = first + " " + second

4.3 字符串插值

4.3.1 插入变量和表达式

let score = 90
let text = "成绩是 \(score + 10)"

4.4 常用字符串属性

4.4.1 判断是否为空

let str = ""
print(str.isEmpty) // true

4.4.2 获取字符串长度

let count = str.count

5 整数

5.1 Int 类型简介

5.1.1 Int 的特点

Int 用于表示整数,位数与当前平台相关(64 位设备通常为 64 位)。

let age: Int = 18

5.2 整数运算

5.2.1 基本算术运算

let a = 10
let b = 3

a + b   // 13
a - b   // 7
a * b   // 30
a / b   // 3(整数除法)

5.3 不同整数类型

5.3.1 Int8 / Int16 / Int32 / Int64

let small: Int8 = 10
let large: Int64 = 1000

6 双精度

6.1 Double 类型

6.1.1 Double 的定义

Double 表示 64 位浮点数,Swift 中默认小数类型

let price = 9.99   // Double

6.2 Double 与 Float 的区别

6.2.1 精度对比

let a: Float = 3.14
let b: Double = 3.1415926535
  • Double 精度更高
  • 推荐优先使用 Double

6.3 类型转换

6.3.1 Int 与 Double 转换

let intValue = 10
let doubleValue = Double(intValue)

7 布尔

7.1 Bool 类型

7.1.1 Bool 的取值

Bool 只有两个值:

  • true
  • false
let isLogin = true

7.2 Bool 常见使用场景

7.2.1 条件判断

if isLogin {
    print("已登录")
} else {
    print("未登录")
}

7.3 Bool 逻辑运算符

7.3.1 逻辑与 / 或 / 非

let a = true
let b = false

a && b   // false
a || b   // true
!a       // false

8 运算符

8.1 算术运算符

8.1.1 基本算术运算

Swift 支持常见的算术运算符:

let a = 10
let b = 3

a + b   // 加法:13
a - b   // 减法:7
a * b   // 乘法:30
a / b   // 除法:3(整数除法)
a % b   // 取余:1

⚠️ 注意:

  • Int / Int 结果仍为 Int
  • 小数运算需使用 Double 或 Float

8.2 赋值运算符

8.2.1 基本赋值

var x = 10

8.2.2 复合赋值运算符

x += 5   // x = x + 5
x -= 2
x *= 3
x /= 2

8.3 比较运算符

8.3.1 常用比较运算符

let a = 5
let b = 10

a == b   // 等于
a != b   // 不等于
a > b
a < b
a >= b
a <= b

比较结果为 Bool 类型。

8.4 逻辑运算符

8.4.1 逻辑与 / 或 / 非

let isLogin = true
let isVIP = false

isLogin && isVIP   // 逻辑与
isLogin || isVIP   // 逻辑或
!isLogin           // 逻辑非

8.5 区间运算符

8.5.1 闭区间与半开区间

1...5   // 闭区间:1,2,3,4,5
1..<5   // 半开区间:1,2,3,4

常用于循环和数组遍历。

9 数组

9.1 声明数组

9.1.1 使用类型推断声明

var numbers = [1, 2, 3, 4]

9.1.2 显式声明数组类型

var names: [String] = ["Tom", "Jack", "Lucy"]

9.1.3 创建空数组

var scores: [Int] = []

9.2 下标访问数组

9.2.1 使用索引访问元素

let names = ["Tom", "Jack", "Lucy"]

names[0]   // Tom
names[1]   // Jack

⚠️ 注意:

  • 数组索引从 0 开始
  • 越界访问会导致 运行时崩溃

9.3 数组遍历

9.3.1 for-in 遍历

let numbers = [1, 2, 3]

for num in numbers {
    print(num)
}

9.3.2 使用索引遍历

for i in 0..<numbers.count {
    print(numbers[i])
}

9.4 追加元素

9.4.1 使用 append 添加元素

var list = [1, 2, 3]
list.append(4)

9.4.2 使用 += 追加多个元素

list += [5, 6]

9.5 插入和替换

9.5.1 指定位置插入元素

var arr = [1, 2, 3]
arr.insert(10, at: 1)
// [1, 10, 2, 3]

9.5.2 替换指定位置元素

arr[0] = 100

9.5.3 批量替换区间

arr[1...2] = [20, 30]

9.6 删除和查找

9.6.1 删除元素

var arr = [10, 20, 30, 40]

arr.remove(at: 1)     // 删除指定索引
arr.removeLast()      // 删除最后一个
arr.removeAll()       // 清空数组

9.6.2 查找元素

let arr = [10, 20, 30]

arr.contains(20)          // true
arr.first                 // Optional(10)
arr.last                  // Optional(30)

9.7 其他操作

9.7.1 获取数组长度

arr.count

9.7.2 判断数组是否为空

arr.isEmpty

9.7.3 数组排序

var nums = [3, 1, 2]
nums.sort()          // 原地排序
let newNums = nums.sorted() // 返回新数组

9.7.4 高阶函数

let nums = [1, 2, 3]

let doubled = nums.map { $0 * 2 }
let filtered = nums.filter { $0 > 1 }
正文到此结束
本文目录