计算属性通过使用 var
关键字定义
import UIKit
struct Person {
private var value = ""
var name: String {
set(param) {
value = param + "-heool-"
print("set - " + param)
}
get {
print("get")
return value + "ios"
}
}
init() {
}
}
var person = Person()
person.name = "swift"
person.name
print(person.name)
import UIKit
struct Person {
private var value = ""
var name: String {
set {
value = newValue //newValue为set默认
}
get {
return value + "-ios"
}
}
init(name: String) {
self.name = name
}
}
var person = Person(name: "swift")
print(person.name)
import UIKit
//一个结构体用于计算圆形和正方形的面积,初始化时,设置好半径,计算圆形和正方形的面积
struct GraphArea {
private var circleArea: Double = 0
private var squareArea: Double = 0
private var originalRadius: Double = -1
// circleArea 和 squareArea 用于存储圆形和正方形的面积,初始值为 0。
// originalRadius 存储原始半径,初始值设置为 -1(表示未初始化)。
var radius: Double {
set(radius) {
circleArea = Double.pi * (radius * radius) //圆的面积计算公式是S=πr²,其中S表示面积,π表示圆周率,r表示圆的半径。
let diam: Double = radius * 2
squareArea = diam * diam //计算正方形面积
originalRadius = radius //保存当前的半径
}
//在set块中,当给radius赋值时,会同时计算并更新 circleArea 和 squareArea 的值。
get {
return originalRadius
}
//get 块返回当前的 originalRadius
}
init(radius: Double) {
self.radius = radius
}
func getCircleArea() -> Double {
return self.circleArea
}
func getSquareArea() -> Double {
return self.squareArea
}
}
var area = GraphArea(radius: 10)
print("半径 = " + String(area.radius))
print("圆的面积 = \(area.getCircleArea())")
print("正方形的面积 = \(area.getSquareArea())")
area.radius = 20 //修改半径,set代码块会被执行,面积会被重新计算
print("半径 = " + String(area.radius))
print("圆的面积 = \(area.getCircleArea())")
print("正方形的面积 = \(area.getSquareArea())")
标签:set,name,get,Double,print,radius,var,属性
From: https://blog.csdn.net/qq_63007445/article/details/143199922