侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

Swift中如何声明常量和变量?它们之间有什么区别?

2025-12-11 / 0 评论 / 4 阅读

题目

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.5

3. 最佳实践

  • 优先使用常量:默认使用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是强类型语言,类型错误会在编译时捕获
  • 内存管理:常量使用更少内存开销,编译器可做优化