Swift 属性学习笔记

在Swift中,属性是一种将值与特定类、结构体或枚举关联的方式。属性分为两种类型:存储属性和计算属性。本文将详细介绍这两种属性以及它们在Swift中的使用。

存储属性

存储属性通过将常量或变量存储为实例的一部分来存储值。存储属性可以是常量存储属性(用关键字“let”定义),也可以是变量存储属性(用关键字“var”定义)。

实例

swiftCopy Code
struct Rectangle { var width: Double var height: Double var area: Double { return width * height } } var rect = Rectangle(width: 10.0, height: 20.0) print("Area: \(rect.area)") // Output: Area: 200.0 rect.width = 15.0 print("Area: \(rect.area)") // Output: Area: 300.0

在上述示例中,我们定义了一个名为Rectangle的结构体,该结构体具有两个变量存储属性width和height。我们还定义了一个计算属性area,该属性根据宽度和高度计算矩形的面积。在创建Rectangle实例时,我们为width和height分配了初始值,并打印了计算属性area的值。然后,我们将width的值更改为15.0,并再次打印计算属性area的值。此时,它应该显示为300.0。

计算属性

计算属性不直接存储值,而是提供一个getter来获取值,并可以提供一个setter来设置值。计算属性通常用来表示类、结构体或枚举的某些特性,例如长度、面积或体积等。

实例

swiftCopy Code
class Circle { var radius: Double var diameter: Double { get { return radius * 2 } set(newDiameter) { radius = newDiameter / 2 } } init(radius: Double) { self.radius = radius } } var circle = Circle(radius: 5.0) print("Diameter: \(circle.diameter)") // Output: Diameter: 10.0 circle.diameter = 20.0 print("Radius: \(circle.radius)") // Output: Radius: 10.0

在上述示例中,我们定义了一个名为Circle的类,该类具有一个变量存储属性radius和一个计算属性diameter。我们提供了一个getter来获取diameter的值,并提供了一个setter来设置radius的值。在创建Circle实例时,我们为半径分配了初始值,并打印了计算属性diameter的值。然后,我们将diameter的值更改为20.0,并打印属性radius的值。此时,它应该显示为10.0。

总结

本文介绍了Swift中的两种属性类型:存储属性和计算属性。存储属性是直接存储值的属性,可以是常量存储属性或变量存储属性。计算属性不直接存储值,而是提供一个getter来获取值,并可以提供一个setter来设置值。它们通常用来表示类、结构体或枚举的某些特性。