Swift 属性学习笔记
在Swift中,属性是一种将值与特定类、结构体或枚举关联的方式。属性分为两种类型:存储属性和计算属性。本文将详细介绍这两种属性以及它们在Swift中的使用。
存储属性
存储属性通过将常量或变量存储为实例的一部分来存储值。存储属性可以是常量存储属性(用关键字“let”定义),也可以是变量存储属性(用关键字“var”定义)。
实例
swiftCopy Codestruct 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 Codeclass 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来设置值。它们通常用来表示类、结构体或枚举的某些特性。