Swift 属性
在本教程中,我们将借助示例了解 Swift 属性及其类型。
在类或结构中定义的 Swift 变量或常量称为属性。例如,
class Person {
// define properties
var name: String = ""
var age: Int = 0
...
}
在这里,在 Person
类中,我们定义了两个属性:
- name - 字符串类型,默认值为 ""
- age - 默认值为 0 的 Int 类型
在学习属性之前,请确保了解 Swift 中 类 和 结构 的工作方式。
实例:swift 属性
class Person {
// define two properties
var name: String = ""
var age: Int = 0
}
var person1 = Person()
// assign values to properties
person1.name = "Kevin"
person1.age = 42
// access properties
print("Name:", person1.name)
print("Age:", person1.age)
结果如下:
Name: Kevin
Age: 42
在上面的例子中,我们创建了一个名为 Person
的类,它有两个属性:name
和 age
。
这里,我们使用对象 person1
访问属性
- person1.name - 访问
name
属性 - person1.age - 访问
age
属性
Person
类的每个实例的实际值。Swift 计算属性
前面,我们讨论了存储每个实例值的存储属性。例如,
class Calculator {
// define stored property
var num1: Int = 0
...
}
在这里,num1
是一个存储的属性,它存储 Calculator
实例的一些值。
然而,还有另一种类型的属性称为计算属性。与存储属性不同,计算属性计算值。例如,
class Calculator {
...
// define computed property
var sum: Int {
// calculate value
num1 + num2
}
}
这里,sum
是一个计算属性,它不存储值,而是计算两个值的相加。
{..}
表示计算属性的主体。实例:swift 计算属性
class Calculator {
// define two stored properties
var num1: Int = 0
var num2: Int = 0
// define one computed property
var sum: Int {
// calculate value
num1 + num2
}
}
var obj = Calculator()
obj.num1 = 11
obj.num2 = 12
// read value of computed property
print("Sum:", obj.sum)
结果为:
Sum: 23
在上面的例子中,我们有
- 存储属性:
num1
和num2
- 计算属性:
sum
这里,计算的属性 sum
将 num1
和 num2
的相加。
var sum: Int {
// calculate value
num1 + num2
}
现在,我们可以通过访问计算属性来访问计算的值。
print("Sum:", obj.sum)
计算属性的 Getters 和 Setters
在 Swift 中,我们还可以在计算属性中包含 getter 和 setter。
- getter - 返回计算值
- setter - 更改值
让我们来看一个实例,
class Calculator {
var num1: Int = 0
var num2: Int = 0
// create computed property
var sum: Int {
// retrieve value
get {
num1 + num2
}
// set new value to num1 and num2
set(modify) {
num1 = (modify + 10)
num2 = (modify + 20)
}
}
}
var obj = Calculator()
obj.num1 = 20
obj.num2 = 50
// get value
print("Get value:", obj.sum)
// provide value to modify
obj.sum = 5
print("New num1 value:", obj.num1)
print("New num2 value:", obj.num2)
结果如下:
Get value: 70
New num1 value: 15
New num2 value: 25
在上面的实例中,我们创建了一个名为 sum
的计算属性。在 sum
中,我们有
Getter - 获取
num1
和num2
的总和get {
num1 + num2
}
Setter - 改变
num1
和num2
的值set(modify) {
num1 = (modify + 10)
num2 = (modify + 20)
}
这里,setter 有一个名为 modify
的新值,可用于将新值设置为 num1
和 num2
。
最后,我们使用了,
obj.sum
- 访问了 getter
obj.sum = 5
- 访问了 setter
Swift 静态属性
class University {
// static property
static var name: String = ""
// non-static property
var founded: Int = 0
}
// create an object of University class
var obj = University()
// assign value to static property
University.name = "Kathmandu University"
print(University.name)
// assign value to non-static property
obj.founded = 1991
print(obj.founded)
结果如下:
Kathmandu University
1991
在上面的实例中,我们有一个静态属性:name
和一个非静态属性:founded
,
University.name
- 使用类名访问静态属性obj.founded
- 使用类的对象访问非静态属性
静态属性是类的类型(与类关联而不是对象),因此我们可以使用类名访问它们。