大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
基础语法与类型
Swift 是静态类型语言:编译期检查类型安全,同时支持类型推断。对照 /roadmaps/swift-ui「基础语法」节点,掌握变量、常量、可选型与集合是读懂 SwiftUI 代码的前提。
学习目标
- 区分
let与var,理解类型推断 - 掌握 Optional 与解包方式
- 使用数组、字典、元组与字符串插值
- 了解类型别名与基础类型转换
核心概念
变量、常量与类型推断
let appName = "CodeRoadMap" // 常量,不可重新赋值
var lessonCount = 12 // 变量
var score: Double = 98.5 // 显式类型注解
// 类型推断为 String,但可标注
let trackSlug: String = "swift-ui-essentials"
// 元组:多值组合
let lesson = (id: 1, title: "语法基础", duration: 35)
print("\(lesson.title),\(lesson.duration) 分钟")
Swift 用 let 优先不可变值,减少意外修改;SwiftUI 中 @State 包裹的变量例外,由框架管理变更。
可选型 Optional
var nickname: String? = nil // 可能为 nil
nickname = "Coder"
// if let 安全解包
if let name = nickname {
print("昵称: \(name)")
}
// nil 合并运算符
let displayName = nickname ?? "匿名用户"
// 可选链
struct User {
var profile: Profile?
}
struct Profile {
var bio: String
}
let user = User(profile: Profile(bio: "SwiftUI 学习者"))
print(user.profile?.bio ?? "暂无简介")
Optional 显式表达「可能为空」,编译器强制处理 nil,避免空指针崩溃。
集合与字符串
// 数组
var tags: [String] = ["Swift", "SwiftUI", "iOS"]
tags.append("Xcode")
// 字典
var settings: [String: Bool] = [
"darkMode": true,
"notifications": false,
]
settings["darkMode"] = false
// 遍历
for tag in tags {
print(tag)
}
for (key, value) in settings {
print("\(key): \(value)")
}
// 字符串插值与多行
let summary = """
Track: \(appName)
课时: \(lessonCount)
标签: \(tags.joined(separator: ", "))
"""
print(summary)
SwiftUI 列表数据常用 [Item] 配合 Identifiable 协议;字典适合配置映射。
与 React/SwiftUI 对照
| Swift | TypeScript / React | SwiftUI 场景 |
|---|---|---|
let / var | const / let | @State private var |
String? | string | undefined | 可选 API 字段 |
[T] | T[] | List / ForEach 数据源 |
[K: V] | Record<K, V> | 环境配置、缓存 |
(a, b) 元组 | 解构数组 [a, b] | 多返回值函数 |
?? | ?? / || | 默认值回退 |
TypeScript 的可选属性 ? 与 Swift Optional 概念一致;React 组件 props 中的 title?: string 对应 Swift 的 title: String?。
练习
- 定义
Lesson元组数组,含 id、title、completed - 用
if let与??处理可能为 nil 的用户昵称 - 创建
[String: Int]字典统计各 tag 出现次数 - 用多行字符串输出 track 摘要信息
小结
Swift 类型安全 + Optional 显式空值 + 集合一等公民。 下一课控制流。见 swift-ui-essentials。