题目
Swift中如何声明常量和变量?它们之间有什么区别?
信息
- 类型:问答
- 难度:⭐
考点
变量声明,常量声明,类型推断
快速回答
在Swift中:
- 使用
let关键字声明常量,值不可修改 - 使用
var关键字声明变量,值可以修改 - 编译器支持类型推断,可省略显式类型声明
1. 声明方式与核心区别
Swift使用两种关键字声明存储值:
// 常量声明(不可变)
let maxLoginAttempts = 3
// 变量声明(可变)
var currentLoginAttempt = 0核心区别:常量(let)的值只能设置一次,尝试修改会导致编译错误;变量(var)的值可以多次修改。
2. 类型推断原理
Swift编译器能根据初始值自动推断类型:
let message = "Hello" // 推断为String类型
var score = 100 // 推断为Int类型也可显式指定类型:
let username: String = "John"
var temperature: Double = 36.53. 最佳实践
- 优先使用常量:默认使用
let,仅在需要修改时才用var,提高代码安全性和性能 - 命名规范:使用驼峰命名法(如
userName) - 延迟初始化:常量可在使用时初始化(但必须在使用前赋值)
let greeting: String if isMorning { greeting = "Good morning" } else { greeting = "Hello" }
4. 常见错误
- 修改常量:
let pi = 3.14 pi = 3.14159 // ❌编译错误:Cannot assign to value - 未初始化变量:
var count: Int print(count) // ❌编译错误:Variable used before being initialized - 类型不匹配:
var age = 25 age = "twenty" // ❌编译错误:Cannot assign value of type 'String' to type 'Int'
5. 扩展知识
- 元组声明:可同时声明多个常量/变量
let (x, y) = (1, 2) var (name, age) = ("Tom", 30) - 类型安全:Swift是强类型语言,类型错误会在编译时捕获
- 内存管理:常量使用更少内存开销,编译器可做优化