整理一个 10分钟掌握 Swift 的精华指南,用一个 Demo 串联 Swift 的核心语法、数据结构、函数、类/结构体和闭包,让你快速入门。
1️⃣ 基础语法与变量
import Foundation // 引入基础库// 变量和常量
var name: String = "Alice" // 可变
let age: Int = 25 // 不可变// 类型推断
var height = 1.68 // 自动推断为 Doubleprint("Name: \(name), Age: \(age), Height: \(height)")
✅ Swift 核心点:
var
可变,let
不可变支持类型推断
字符串插值
\(变量)
2️⃣ 控制流
// 条件语句
if age >= 18 {print("\(name) is adult")
} else {print("\(name) is minor")
}// 循环
for i in 1...5 { // 闭区间print("i = \(i)")
}var j = 0
while j < 3 {print("j = \(j)")j += 1
}
✅ 核心:
if-else
、for-in
、while
1...5
表示闭区间(包含 1 和 5),1..<5
表示左闭右开
3️⃣ 函数与闭包
// 函数
func add(_ a: Int, _ b: Int) -> Int {return a + b
}print("10 + 20 = \(add(10, 20))")// 闭包(匿名函数)
let multiply: (Int, Int) -> Int = { (x, y) inreturn x * y
}
print("3 * 4 = \(multiply(3, 4))")
✅ 核心:
func
定义函数_
表示调用时省略参数名闭包是 Swift 的函数式编程核心
4️⃣ 数组与字典
// 数组
var numbers = [3, 1, 4, 1, 5]
numbers.append(9)
numbers.sort()
print("Numbers: \(numbers)")// 字典
var scores = ["Alice": 95, "Bob": 88]
scores["Charlie"] = 90
for (name, score) in scores {print("\(name): \(score)")
}
✅ 核心:
Swift 有强类型数组
[Type]
和字典[Key: Value]
for-in
可遍历数组和字典
5️⃣ 结构体与类
// 结构体
struct Point {var x: Intvar y: Intfunc printPoint() {print("(\(x), \(y))")}
}// 类
class Person {var name: Stringvar age: Intinit(name: String, age: Int) {self.name = nameself.age = age}func greet() {print("Hello, I'm \(name), \(age) years old")}
}let p1 = Point(x: 1, y: 2)
p1.printPoint()let person = Person(name: "Alice", age: 25)
person.greet()
✅ 核心:
struct
默认值类型,class
是引用类型init
构造函数方法直接写在结构体或类中
6️⃣ 可选类型(Optional)
var optionalName: String? = "Bob"
print(optionalName ?? "No name") // nil 合并运算符if let realName = optionalName {print("Name exists: \(realName)")
} else {print("Name is nil")
}
✅ 核心:
?
表示可能为空if let
安全解包
7️⃣ 高阶用法:map / filter / reduce
let nums = [1, 2, 3, 4, 5]
let squared = nums.map { $0 * $0 } // [1,4,9,16,25]
let even = nums.filter { $0 % 2 == 0 } // [2,4]
let sum = nums.reduce(0) { $0 + $1 } // 15print(squared, even, sum)
✅ 核心:
Swift 内置高阶函数,方便函数式编程
8️⃣ 总结 Swift 核心点
功能 | Swift 表达 |
---|---|
变量/常量 | var / let |
类型推断 | var x = 10 |
条件/循环 | if , for-in , while |
函数 | func add(a,b) -> Int |
闭包 | { (x,y) in x*y } |
数组/字典 | [Type] / [Key: Value] |
类/结构体 | class / struct |
可选类型 | ? / if let |
高阶函数 | map , filter , reduce |
我们仔细拆解这行 Swift 代码,其他都很简单,不再赘述:
let sum = nums.reduce(0) { $0 + $1 }
nums.reduce(0)
是什么?
nums
是一个数组,例如:
let nums = [1, 2, 3, 4, 5]
reduce
是 高阶函数,作用是 把数组里的元素“累积”成一个值。0
是 初始值,表示累加的起点。{ $0 + $1 }
是一个闭包(匿名函数),用于定义 如何累加每个元素。
闭包 { $0 + $1 }
含义
$0
表示当前累积值(初始值开始是 0)$1
表示数组当前遍历的元素{ $0 + $1 }
就是把累积值加上当前元素,并返回新的累积值。
执行过程(以 [1,2,3,4,5]
为例)
步骤 | 累积值 $0 | 当前元素 $1 | 计算 $0+$1 | 新累积值 |
---|---|---|---|---|
初始 | 0 | 1 | 0 + 1 | 1 |
2 | 1 | 2 | 1 + 2 | 3 |
3 | 3 | 3 | 3 + 3 | 6 |
4 | 6 | 4 | 6 + 4 | 10 |
5 | 10 | 5 | 10 + 5 | 15 |
最终,reduce
返回 15,赋值给 sum
。
总结
reduce(initial) { closure }
可以把数组元素“折叠”为一个值。$0
= 累积值,$1
= 当前元素。上面这行代码等价于传统循环:
var sum = 0
for n in nums {sum += n
}