大佬教程收集整理的这篇文章主要介绍了Swift开篇008->属性,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
案例
@H_616_65@struct Range { var starTindex: Int // 变量存储属性 let width: Int // 常量存储属性(创建实例时被初始化) } var range = Range(starTindex: 0,width: 5) // 区间为 0...5 range.starTindex = 3 // 区间为 3...8常量结构体的存储属性
延迟存储属性:lazy var@H_502_13@声明. 第一次被调用时才计算其属性的初始化值
使用场景
当被 lazy@H_502_13@ 标记的属性在没有初始化时就同时被多个线程访问,则无法保证该属性只会被初始化一次
存储属性和实例变量
@H_674_16@PART_C 计算属性(-案例值得琢磨-)
不直接存储值,提供 getter@H_502_13@、
setter@H_502_13@ 来间接获取和设置值
只读计算属性:只有 getter@H_502_13@ 没有
setter@H_502_13@ 的计算属性,总是返回一个值
定义
注意
全局的常量或变量都是延迟计算的(省略 lazy@H_502_13@ 修饰符)
局部的常量或变量从不延迟计算
@H_674_16@PART_F 类型属性(static@H_502_13@):定义某个类型所有实例共享的数据
语法
@H_616_65@struct SomeStructure { // 存储型类型属性 static var storedTypeProperty = "Some value." // 计算型类型属性(本例所用是只读的) static var computedTypeProperty: Int { return 5 } } enum SomeEnumeration { static var storedTypeProperty = "Some value." static var computedTypeProperty: Int { return 6 } } class someClass { static var storedTypeProperty = "Some value." static var computedTypeProperty: Int { return 7 } // 为类定义计算型类型属性时,改用 class 支持子类对父类的实现进行重写 class var overrideableComputedTypeProperty: Int { return 8 } }案例:两个喇叭的音量
@H_616_65@struct AudioChAnnel { // 常量存储类型属性:音量上限 static let thresholdLevel = 10 // 变量存储类型属性:输入音量 static var maxInputLevelForAllChAnnels = 0 // 存储型实例属性:当前声道音量 var currentLevel: Int = 0 { // 属性观察器 didSet { if currentLevel > AudioChAnnel.thresholdLevel { // 将当前音量限制在音量上限内 currentLevel = AudioChAnnel.thresholdLevel } if currentLevel > AudioChAnnel.maxInputLevelForAllChAnnels { // 存储音量上限 AudioChAnnel.maxInputLevelForAllChAnnels = currentLevel } } } } var leftChAnnel = AudioChAnnel() var rightChAnnel = AudioChAnnel() leftChAnnel.currentLevel = 7 // 左声道音量为 7 rightChAnnel.currentLevel = 11 // 右声道音量为 10(控制在音量上限内)以上是大佬教程为你收集整理的Swift开篇008->属性全部内容,希望文章能够帮你解决Swift开篇008->属性所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。