首页 > 其他分享 >计算属性get、set

计算属性get、set

时间:2024-10-26 17:16:36浏览次数:6  
标签:set name get Double print radius var 属性

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

相关文章

  • MAVEN配置文件(settings.xml)偏好设置 配置仓库、镜像地址
    1、配置本地仓库在conf/settings.xml文件中,setting标签下配置你的本地maven本地仓库<!--localRepository|Thepathtothelocalrepositorymavenwillusetostoreartifacts.||Default:${user.home}/.m2/repository<localRepository>/path/to/l......
  • 【C++】map和set的使用
    最好的,不一定是最合适的;最合适的,才是真正最好的。......
  • day02|计算机网络重难点之HTTP请求报文和响应报文、HTTP的请求方式(方法字段)、GET请求
    day02|计算机网络重难点之HTTP请求报文和响应报文、HTTP的请求方式(方法字段)、GET请求和POST请求的区别3.HTTP请求报文和响应报文是怎样的,有哪些常见的字段?4.HTTP有哪些请求方式?(即方法字段的不同取值)5.GET请求和POST请求的区别3.HTTP请求报文和响应报文是怎样的,有哪......
  • GetEnumerator使用
    internalclassProgram{staticasyncTaskMain(string[]args){varlist=newList<int>(){1,2,3,4,5,6,7,};varres=Pairwise<int,string>(list,(s1,s2)=>{......
  • Bitset容器与优化
    Bitset是啥某种神奇的容器,用于存储二进制。头文件:#include<bitset>定义方法:bitset<5>Bit1("10011");bitset<5>Bit2(4);“<>”中的内容代表容器的长度,相当于一个数组,但是每一位只能存储0......
  • 从门面模式到 SLF4J 及其 getLogger 方法原理
    基于以下内容总结:从门面模式到Slf4j、10分钟讲清楚JavaSLF4J,Java日志框架的扛把子,从原理到实践写后端接口的时候,先写一个Service接口,这个Service接口的实现中可能会调用多个其他Service或Mapper方法来实现某个业务,对于Controller,只需要传递参数给Service方法就......
  • 详解c++中的set_difference函数
    set_difference功能描述:求两个集合的差集函数原型:set_difference(iteratorbeg1,iteratorend1,iteratorbeg2,iteratorend2,iteratordest);//求两个集合的差集//注意:两个集合必须是有序序列//beg1容器1开始迭代器//end1容器1结束迭代器//beg2容......
  • git reset后如何找回代码
    在使用gitreset后恢复丢失代码的步骤:一、理解gitreset的作用;二、使用reflog查找丢失提交;三、利用checkout命令恢复代码;四、确保代码安全。​在开发过程中,开发者可能因误操作或其他原因使用了gitreset命令,从而导致代码丢失,恢复丢失代码的关键在于对git内部机制的理解以及正确的......
  • 关于手动关闭多个el-popover的方法且不使用visible属性
    1.在el-popover使用ref<el-popoverref="motifyPopover":width="260"trigger="click"popper-class="modify-popover"/>2.声明motifyPopoverconstmotifyPopover=ref<InstanceType<typeofElPopover>>()......
  • mongodb获取配置参数getParameter和setParameter设置参数
    1、获取某个配置参数的值:db.runCommand({getParameter:1,tcmallocAggressiveMemoryDecommit:1})2、设置某个配置参数的值:db.adminCommand({setParameter:1,tcmallocAggressiveMemoryDecommit:1})restcloud1:SECONDARY>db.runCommand({getParameter:1,tcmallocAggressiveM......