变量与常量 #
一、变量与常量概述 #
在Swift中,数据存储有两种方式:
- 变量(Variable):使用
var声明,值可以改变 - 常量(Constant):使用
let声明,值不可改变
二、变量(var) #
2.1 声明变量 #
swift
var name = "Swift"
var age = 25
var score = 95.5
name = "Swift 5.9"
age = 26
score = 98.0
2.2 显式类型声明 #
swift
var name: String = "Swift"
var age: Int = 25
var score: Double = 95.5
var isActive: Bool = true
2.3 先声明后赋值 #
swift
var message: String
message = "Hello"
message = "World"
2.4 多变量声明 #
swift
var x = 1, y = 2, z = 3
var a: Int, b: Int, c: Int
a = 10
b = 20
c = 30
三、常量(let) #
3.1 声明常量 #
swift
let pi = 3.14159
let language = "Swift"
let maxConnections = 100
pi = 3.14
3.2 显式类型声明 #
swift
let pi: Double = 3.14159
let language: String = "Swift"
let maxConnections: Int = 100
3.3 常量的使用场景 #
swift
let apiKey = "your-api-key"
let baseURL = "https://api.example.com"
let timeout: TimeInterval = 30.0
let maxRetryCount = 3
3.4 常量与引用类型 #
对于引用类型(如类),常量保证引用不变,但内容可变:
swift
class Person {
var name: String
init(name: String) {
self.name = name
}
}
let person = Person(name: "张三")
person.name = "李四"
四、类型推断 #
Swift具有强大的类型推断能力,可以根据初始值自动推断类型。
4.1 基本类型推断 #
swift
let integer = 42
let double = 3.14
let string = "Hello"
let boolean = true
print(type(of: integer))
print(type(of: double))
print(type(of: string))
print(type(of: boolean))
4.2 数值类型推断 #
swift
let decimal = 10
let binary = 0b1010
let octal = 0o12
let hexadecimal = 0xA
let bigNumber = 1_000_000
let scientific = 1.5e2
4.3 类型推断的限制 #
swift
let value = 3
let result = value / 2
let valueDouble: Double = 3
let resultDouble = valueDouble / 2
五、命名规则 #
5.1 基本规则 #
swift
let name = "张三"
let userName = "李四"
let userAge = 25
let _private = "私有"
let π = 3.14159
5.2 避免的命名 #
swift
let String = "Hello"
let Int = 42
let var = "keyword"
let `var` = "keyword"
5.3 命名最佳实践 #
swift
let maxRetryCount = 3
let baseURL = "https://api.example.com"
let isLoggedIn = true
var currentUser: User?
六、作用域 #
6.1 全局变量 #
swift
let globalConstant = "全局常量"
var globalVariable = "全局变量"
func example() {
print(globalConstant)
print(globalVariable)
}
6.2 局部变量 #
swift
func calculate() {
let localConstant = "局部常量"
var localVariable = "局部变量"
print(localConstant)
print(localVariable)
}
print(localConstant)
6.3 嵌套作用域 #
swift
let x = 10
func outer() {
let y = 20
func inner() {
let z = 30
print(x)
print(y)
print(z)
}
inner()
}
七、类型注解 #
7.1 显式类型 #
swift
let name: String = "Swift"
var age: Int = 25
var score: Double = 95.5
var isActive: Bool = true
7.2 类型别名 #
swift
typealias Age = Int
typealias Name = String
typealias Completion = () -> Void
var age: Age = 25
var name: Name = "张三"
var callback: Completion = { }
7.3 集合类型 #
swift
var names: [String] = ["张三", "李四"]
var scores: [String: Int] = ["张三": 90, "李四": 85]
var uniqueNumbers: Set<Int> = [1, 2, 3]
八、最佳实践 #
8.1 优先使用常量 #
swift
let pi = 3.14159
let greeting = "Hello"
let maxValue = 100
var counter = 0
var items: [String] = []
8.2 有意义的命名 #
swift
let maxRetryCount = 3
let defaultTimeout = 30.0
let apiBaseURL = "https://api.example.com"
var currentUser: User?
var isLoading: Bool = false
8.3 避免魔法数字 #
swift
if score > 60 {
print("及格")
}
let passingScore = 60
if score > passingScore {
print("及格")
}
8.4 使用描述性常量 #
swift
let animationDuration = 0.3
let cornerRadius: CGFloat = 8.0
let cellIdentifier = "UserCell"
九、常见错误 #
9.1 类型不匹配 #
swift
var name = "Swift"
name = 42
9.2 常量重新赋值 #
swift
let pi = 3.14
pi = 3.14159
9.3 变量未初始化 #
swift
var message: String
print(message)
message = "Hello"
9.4 类型推断错误 #
swift
let result = 3 / 2
print(result)
let resultDouble: Double = 3
let preciseResult = resultDouble / 2
十、总结 #
本章学习了:
- 变量(var):可变的值
- 常量(let):不可变的值
- 类型推断:Swift自动推断类型
- 命名规则:有意义的命名
最佳实践:
- 优先使用常量
- 使用有意义的命名
- 避免魔法数字
- 显式声明复杂类型
下一章,我们将学习Swift的基本数据类型!
最后更新:2026-03-26