Swift面向对象基础(中)——Swift中的存储属性和计算属性
1、存储属性:存储在类、结构体里的变量或者常量
2、分为:实例存储属性、类型存储属性
3、所有的存储属性必须显示的指定初始值,在定义时或者构造器当中指定
4、可选类型的存储属性可以不指定初始值
1 import Foundation 2 3 struct lengthRang { 4 var start:Int 5 //定义常量存储属性,可以不指定初始值 6 let length:Int 7 } 8 //创建结构体的实例变量 9 var len = lengthRang(start: 12, length: 2) 10 println("len的起点为\(len.start),长度为\(len.length)") 11 12 //延迟存储属性:第一次被调用时候才会被计算初始值的属性,用lazy修饰符 13 //当某个实例是一个创建成本比较大的实例的引用的时候,使用延迟存储可以提高程序的性能 14 //延迟存储属性只能被定义成变量,也就是var关键字创建,所以不能用let创建 15 16 //计算属性:就是set和get方法的组合 17 /*语法格式 18 [修饰符] var 计算属性名:属性类型{ 19 get{ 20 } 21 set(形参名){ 22 } 23 } 24 */ 25 26 class User { 27 var first:String = "" 28 var last:String = "" 29 //定义计算属性 30 var fullName:String{ 31 //定义计算属性的getter方法,该方法的返回值由first、last两个存储属性决定 32 get{ 33 return first + "_" + last 34 } 35 //定义计算属性的setter方法 36 set(newValue){ 37 var names = newValue.componentsSeparatedByString("_") 38 self.first = names[0] 39 self.last = names[1] 40 } 41 } 42 init(first:String,last:String){ 43 self.first = first 44 self.last = last 45 } 46 } 47 //创建一个实例 48 let s = User(first: "heyang", last: "hello") 49 println(s.fullName) 50 s.fullName = "何杨_你好" 51 println(s.fullName) 52 //只读属性,则无需set部分,可以省略get和花括号 53 54 55 56 57 //属性观察者 58 /* 59 1.除了延迟存储属性之外的所有存储属性(包括实例存储属性和类型存储属性) 60 2.可通过重载方式为继承得到的属性(包括存储属性和计算属性)添加属性观察者 61 */ 62 //其实属性观察者就是 两个特殊的回调方法 63 /* 64 [修饰符]var 计算属性名:属性类型 = 初始值{ 65 wilSet(newValue){ 66 //属性即将被赋值之前自动调用的方法 67 } 68 didSet(oldValue){ 69 //属性呗赋值完成之后自动调用的方法 70 } 71 } 72 *******参数可以省略********* 73 */ 74 class Person { 75 //定义存储属性 76 var name:String = ""{ 77 willSet{ 78 if(count(newValue)>6) || (count(newValue)<2){ 79 println("您设置的人名字\(newValue)不符合要求,请重新设置") 80 }else{ 81 println("人名符合要求,设置成功") 82 } 83 } 84 didSet{ 85 println("人名设置完成,被修改的原名为:\(oldValue)") 86 } 87 } 88 var age:Int = 0{ 89 willSet{ 90 if newValue>100 || newValue<0{ 91 println("您设置的年龄\(newValue)不符合要求,请重新设置!") 92 } 93 else{ 94 println("年龄设置符合要求,设置成功。") 95 } 96 } 97 didSet{ 98 println("年龄设置完成,被修改的年龄为\(oldValue)") 99 } 100 } 101 } 102 //然后是创建实例 103 var p = Person() 104 p.name = "张三" 105 p.age = 21 106 println("\(p.name)")
运行结果:
Swift面向对象基础(中)——Swift中的存储属性和计算属性相关推荐
- Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等
一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法 ...
- Swift面向对象基础(上)——Swift中的枚举
Swift中枚举 学习笔记来自<极客学院> 1 import Foundation 2 3 /**********1*Swift定义枚举的语法格式*************/ 4 /* 5 ...
- Swift面向对象基础(中)——Swift中的方法
1.定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数 2.方法要么属于该类型本身,要么是该类型的一个实例 3.不能独立执行方法,执行方法必须使用类型或实例作为调用者 注意: ...
- Swift面向对象基础(上)——Swift中的类和结构体(下)
2019独角兽企业重金招聘Python工程师标准>>> 学习来自<极客学院> 1 import Foundation 2 3 class User { 4 var nam ...
- swift_044(Swift 计算属性和存储属性的概念以及使用)
import UIKit var str = "Hello, playground" class DHButton: UIButton { /* 1.存储属性: 就是存储一个常量或 ...
- 《从零开始学Swift》学习笔记(Day 32)——计算属性
原创文章,欢迎转载.转载请注明:关东升的博客 计算属性本身不存储数据,而是从其他存储属性中计算得到数据. 计算属性概念: 计算属性提供了一个getter(取值访问器)来获取值,以及一个可选的sette ...
- 关于Vue中计算属性computed和methods属性的区别,你了解多少呢
文章目录 1.实例 2.computed计算属性中: 前提1.当计算属性fn2没有依赖data中的数据时: 前提2.:当计算属性依赖data中的数据时: 3.区别: 在做项目过程中,有时会出现同一个需 ...
- vue监听字符串长度_vue中的计算属性和侦听器
计算属性概念 模板内的候通现端数是制这.效合应近环大过这业据的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护在重说道.础过学开概码数项遍间里哦行览屏屏 ...
- Vue2中使用计算属性
计算属性的概念与使用场景主要有以下几点 1.初始化时,要显示的数据,不存在,需要通过计算操作得 2.执行的时机有2步: (1)初始化显示会执行一次(有特殊情况),拿到初始值,去显示.(2)当计算属性时 ...
最新文章
- Nginx源码分析--字符串处理
- python【Matlibplot绘图库】-主要概念
- 三次握手,四次挥手?
- win7 一些快捷系统工具命令
- c语言infile和outfile用法,C语言文件读写基本操作DEMO
- dijkstra算法优化
- java包命名规则名词_java中命名规范
- ORACLE经常使用系统查询
- JS前端常用工具方法
- Asp.Net IIS 管理类(全)
- ZBrush for Mac的插图技巧
- 管理新语:新员工进来,竟然连起码的技能培训都没有
- matlab leslie模型,【2017年整理】leslie人口增长模型模型.doc
- codeblocks下载安装与解决codeblocks找不到编译器的方法
- 测试cpu是否有问题的软件,cpu测试软件|CPU检测软件有哪些 5款CPU检测工具介绍
- 【毕业设计】基于单片机的心率血氧健康监测手表 - 物联网 嵌入式
- 【Agni-s Philosophy】使用的图形技术解说(后篇)Volume渲染和粒子处理
- springbooot使用google验证码
- “北上广深”的“收租婆”角色什么时候能够减少?
- 零售业100个创意促销方案