import Foundation//一个存储属性就是存储在特定类或结构体的实例里的一个常量或变量struct FixedLengthRange { var firstValue: Int let length: Int}var rangeOfThreeItems = FixedLengthRange(firstValue: 0,length: 3)// 该区间表示整数0,1,2rangeOfThreeItems.firstValue = 6// 该区间现在表示整数6,7,8//常量和存储属性let rangeOfFourItems = FixedLengthRange(firstValue: 0,length: 4)// 该区间表示整数0,1,2,3//rangeOfFourItems.firstValue = 6// 尽管firstValue诗歌变量属性,这里还是会报错//延迟存储属性。延迟存储属性是指 当第一次被调用的时候才会计算其初始值的属性//在属性声明前使用lazy来标示一个延迟存储属性,必须将延迟存储属性声明成变量class Dataimporter { /* Dataimporter 是一个将外部文件中的数据导入的类。 这个类的初始化会消耗不少时间。 */ var filename = "data.txt" // 这是提供数据导入功能}class DataManager { lazy var importer = Dataimporter() var data = [String]() // 这是提供数据管理功能}let manager = DataManager()manager.data.append("Some data")manager.data.append("Some more data")// Dataimporter 实例的 importer 属性还没有被创建print(manager.importer.filename)// Dataimporter 实例的 importer 属性现在被创建了// 输出 "data.txt”//计算属性。类、结构体和枚举可以定义 计算属性,计算属性不直接存储值,而是提供一个 getter 来获取值,一个可选的 setter 来间接设置其他属性或变量的值struct Point { var x = 0.0,y = 0.0}struct Size { var wIDth = 0.0,height = 0.0}struct Rect { var origin = Point() var size = Size() var center: Point { get { let centerX = origin.x + (size.wIDth / 2) let centerY = origin.y + (size.height / 2) return Point(x: centerX,y: centerY) } set(newCenter) { origin.x = newCenter.x - (size.wIDth / 2) origin.y = newCenter.y - (size.height / 2) } /* set { origin.x = newValue.x - (size.wIDth / 2) origin.y = newValue.y - (size.height / 2) } */ }}var square = Rect(origin: Point(x: 0.0,y: 0.0),size: Size(wIDth: 10.0,height: 10.0))let initialSquareCenter = square.centersquare.center = Point(x: 15.0,y: 15.0)print("square.origin is Now at (\(square.origin.x),\(square.origin.y))")// 输出 "square.origin is Now at (10.0,10.0)//只读计算属性struct CuboID { var wIDth = 0.0,height = 0.0,depth = 0.0 //只读计算属性的声明可以去掉get关键字和花括号 var volume: Double { return wIDth * height * depth }}let fourByFiveByTwo = CuboID(wIDth: 4.0,height: 5.0,depth: 2.0)print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)")// 输出 "the volume of fourByFiveByTwo is 40.0//属性监视器//属性监视器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性监视器,甚至新的值和现在的值相同的时候也不例外//可以为除了延迟存储属性之外的其他存储属性添加属性监视器,也可以通过重载属性的方式为继承的属性(包括存储属性和计算属性)添加属性监视器class StepCounter { var totalSteps: Int = 0 { willSet(newTotalSteps) { print("About to set totalSteps to \(newTotalSteps)") } dIDSet { if totalSteps > oldValue { print("Added \(totalSteps - oldValue) steps") } } }}let stepCounter = StepCounter()stepCounter.totalSteps = 200// About to set totalSteps to 200// Added 200 stepsstepCounter.totalSteps = 360// About to set totalSteps to 360// Added 160 stepsstepCounter.totalSteps = 896// About to set totalSteps to 896// Added 536 steps总结
以上是内存溢出为你收集整理的Swift之文件管理全部内容,希望文章能够帮你解决Swift之文件管理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)