计算属性通过使用 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())")

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐