ToolkitX
知识库工具箱

Swift 基础

类型系统、闭包、协议

25min·入门

01. Swift 基础语法

Swift 是 Apple 开发的现代编程语言,用于 iOS、macOS、watchOS、tvOS 开发。 Swift 的特点: - 类型安全 - 可选类型(Optionals) - 闭包(Closures) - 协议(Protocols) - 泛型(Generics)
swift
import Foundation

// 变量和常量
let name = "张三"  // 常量
var age = 25       // 可变变量
age = 26

// 数据类型
let integer: Int = 42
let double: Double = 3.14
let string: String = "Hello"
let boolean: Bool = true

// 可选类型
var optionalName: String? = "李四"
if let name = optionalName {
print("名字: \(name)")
}

// 空合并运算符
let displayName = optionalName ?? "未知"

// 数组
var fruits = ["苹果", "香蕉", "橘子"]
fruits.append("葡萄")
fruits.remove(at: 1)

// 字典
var scores: [String: Int] = ["张三": 95, "李四": 88]
scores["王五"] = 92

// 循环
for fruit in fruits {
print(fruit)
}

// 函数
func greet(name: String) -> String {
return "你好, \(name)!"
}

let greeting = greet(name: "Swift")

02. 闭包

闭包是自包含的函数代码块,可以在代码中传递和使用。 闭包语法: - 简化闭包:省略参数类型和 return - 尾随闭包:闭包是最后一个参数时 - 捕获值:闭包可以捕获和修改外部变量
swift
import Foundation

// 基本闭包
let greet = { (name: String) -> String in
return "你好, \(name)!"
}
print(greet("张三"))

// 简化闭包
let numbers = [5, 3, 8, 1, 9]

// 排序
let sorted = numbers.sorted { $0 < $1 }
print(sorted) // [1, 3, 5, 8, 9]

// 高阶函数
let doubled = numbers.map { $0 * 2 }
print(doubled) // [10, 6, 16, 2, 18]

let evens = numbers.filter { $0 % 2 == 0 }
print(evens) // [8]

let sum = numbers.reduce(0, +)
print(sum) // 26

// 尾随闭包
func performOperation(on numbers: [Int], operation: (Int) -> Int) -> [Int] {
return numbers.map(operation)
}

let result = performOperation(on: numbers) { $0 * 3 }
print(result) // [15, 9, 24, 3, 27]

// 捕获值
func makeCounter() -> () -> Int {
var count = 0
return {
    count += 1
    return count
}
}

let counter = makeCounter()
print(counter()) // 1
print(counter()) // 2
print(counter()) // 3

03. 协议与扩展

协议(Protocol)定义方法、属性和其他需求的蓝图。 协议特点: - 定义接口规范 - 支持多协议遵循 - 协议扩展提供默认实现 - 协议组合
swift
import Foundation

// 定义协议
protocol Drawable {
func draw()
}

protocol Resizable {
func resize(by factor: Double)
}

// 协议扩展提供默认实现
extension Drawable {
func draw() {
    print("绘制图形")
}
}

// 遵循协议
struct Circle: Drawable, Resizable {
var radius: Double

func draw() {
    print("绘制圆形,半径: \(radius)")
}

mutating func resize(by factor: Double) {
    radius *= factor
}
}

// 使用
var circle = Circle(radius: 5)
circle.draw() // 绘制圆形,半径: 5.0
circle.resize(by: 2)
circle.draw() // 绘制圆形,半径: 10.0

// 协议组合
func render(_ item: Drawable & Resizable) {
item.draw()
}

知识测验

1/5正确 0

Swift 中可选类型(Optional)的作用是什么?

下一节

面向对象

下一节