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()) // 303. 协议与扩展
协议(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)的作用是什么?
下一节
下一节 面向对象