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