Swift 变量的基本概念在 Swift 中变量用于存储和操作数据。变量通过关键字var声明表示其值可以随时间改变。Swift 是类型安全的语言但支持类型推断无需显式声明类型。var greeting Hello, Swift! print(greeting) // 输出: Hello, Swift! greeting Hello, World! print(greeting) // 输出: Hello, World!变量类型与类型推断Swift 支持多种数据类型如Int、String、Double、Bool等。编译器可以根据初始值推断变量类型。var age 25 // 推断为 Int var name Alice // 推断为 String var price 9.99 // 推断为 Double var isActive true // 推断为 Bool显式声明类型时使用冒号:指定var score: Int 100 var message: String Welcome变量命名规则变量名需遵循以下规则以字母或下划线开头。可包含字母、数字、下划线。区分大小写。避免使用 Swift 保留关键字。var _privateData Secret var user2Name Bob var Dog // 支持 Unicode 字符变量作用域变量的作用域取决于其声明位置。局部变量仅在定义它的代码块内有效。func testScope() { var localVar Local print(localVar) // 有效 } // print(localVar) // 错误超出作用域变量与常量对比与变量不同常量使用let声明值不可更改。优先使用常量能提高代码安全性。let pi 3.14159 // pi 3.14 // 错误常量不可修改计算变量通过get和set定义计算变量其值依赖其他变量或逻辑。var radius 5.0 var diameter: Double { get { return radius * 2 } set { radius newValue / 2 } } print(diameter) // 输出: 10.0 diameter 14 print(radius) // 输出: 7.0属性观察器通过willSet和didSet监听变量值的变化。var counter 0 { willSet { print(即将设置新值: \(newValue)) } didSet { print(旧值: \(oldValue), 新值: \(counter)) } } counter 1 // 输出: // 即将设置新值: 1 // 旧值: 0, 新值: 1延迟存储变量使用lazy关键字延迟变量的初始化直到首次访问。class DataLoader { lazy var data loadData() func loadData() - String { return Loaded data } } let loader DataLoader() print(loader.data) // 首次访问时初始化类型属性通过static定义属于类型本身的变量而非实例。class Config { static let apiKey 12345 } print(Config.apiKey) // 直接通过类型访问变量与内存管理Swift 使用自动引用计数ARC管理内存。弱引用weak和无主引用unowned可避免循环引用。class Person { var name: String weak var friend: Person? init(name: String) { self.name name } } var alice: Person? Person(name: Alice) var bob: Person? Person(name: Bob) alice?.friend bob bob?.friend alice alice nil // 弱引用不会阻止释放
Swift变量入门指南
Swift 变量的基本概念在 Swift 中变量用于存储和操作数据。变量通过关键字var声明表示其值可以随时间改变。Swift 是类型安全的语言但支持类型推断无需显式声明类型。var greeting Hello, Swift! print(greeting) // 输出: Hello, Swift! greeting Hello, World! print(greeting) // 输出: Hello, World!变量类型与类型推断Swift 支持多种数据类型如Int、String、Double、Bool等。编译器可以根据初始值推断变量类型。var age 25 // 推断为 Int var name Alice // 推断为 String var price 9.99 // 推断为 Double var isActive true // 推断为 Bool显式声明类型时使用冒号:指定var score: Int 100 var message: String Welcome变量命名规则变量名需遵循以下规则以字母或下划线开头。可包含字母、数字、下划线。区分大小写。避免使用 Swift 保留关键字。var _privateData Secret var user2Name Bob var Dog // 支持 Unicode 字符变量作用域变量的作用域取决于其声明位置。局部变量仅在定义它的代码块内有效。func testScope() { var localVar Local print(localVar) // 有效 } // print(localVar) // 错误超出作用域变量与常量对比与变量不同常量使用let声明值不可更改。优先使用常量能提高代码安全性。let pi 3.14159 // pi 3.14 // 错误常量不可修改计算变量通过get和set定义计算变量其值依赖其他变量或逻辑。var radius 5.0 var diameter: Double { get { return radius * 2 } set { radius newValue / 2 } } print(diameter) // 输出: 10.0 diameter 14 print(radius) // 输出: 7.0属性观察器通过willSet和didSet监听变量值的变化。var counter 0 { willSet { print(即将设置新值: \(newValue)) } didSet { print(旧值: \(oldValue), 新值: \(counter)) } } counter 1 // 输出: // 即将设置新值: 1 // 旧值: 0, 新值: 1延迟存储变量使用lazy关键字延迟变量的初始化直到首次访问。class DataLoader { lazy var data loadData() func loadData() - String { return Loaded data } } let loader DataLoader() print(loader.data) // 首次访问时初始化类型属性通过static定义属于类型本身的变量而非实例。class Config { static let apiKey 12345 } print(Config.apiKey) // 直接通过类型访问变量与内存管理Swift 使用自动引用计数ARC管理内存。弱引用weak和无主引用unowned可避免循环引用。class Person { var name: String weak var friend: Person? init(name: String) { self.name name } } var alice: Person? Person(name: Alice) var bob: Person? Person(name: Bob) alice?.friend bob bob?.friend alice alice nil // 弱引用不会阻止释放