整理一個?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
}