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中的存储属性和计算属性相关推荐

  1. Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

    一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法 ...

  2. Swift面向对象基础(上)——Swift中的枚举

    Swift中枚举 学习笔记来自<极客学院> 1 import Foundation 2 3 /**********1*Swift定义枚举的语法格式*************/ 4 /* 5 ...

  3. Swift面向对象基础(中)——Swift中的方法

    1.定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数 2.方法要么属于该类型本身,要么是该类型的一个实例 3.不能独立执行方法,执行方法必须使用类型或实例作为调用者 注意: ...

  4. Swift面向对象基础(上)——Swift中的类和结构体(下)

    2019独角兽企业重金招聘Python工程师标准>>> 学习来自<极客学院> 1 import Foundation 2 3 class User { 4 var nam ...

  5. swift_044(Swift 计算属性和存储属性的概念以及使用)

    import UIKit var str = "Hello, playground" class DHButton: UIButton { /* 1.存储属性: 就是存储一个常量或 ...

  6. 《从零开始学Swift》学习笔记(Day 32)——计算属性

    原创文章,欢迎转载.转载请注明:关东升的博客 计算属性本身不存储数据,而是从其他存储属性中计算得到数据. 计算属性概念: 计算属性提供了一个getter(取值访问器)来获取值,以及一个可选的sette ...

  7. 关于Vue中计算属性computed和methods属性的区别,你了解多少呢

    文章目录 1.实例 2.computed计算属性中: 前提1.当计算属性fn2没有依赖data中的数据时: 前提2.:当计算属性依赖data中的数据时: 3.区别: 在做项目过程中,有时会出现同一个需 ...

  8. vue监听字符串长度_vue中的计算属性和侦听器

    计算属性概念 模板内的候通现端数是制这.效合应近环大过这业据的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护在重说道.础过学开概码数项遍间里哦行览屏屏 ...

  9. Vue2中使用计算属性

    计算属性的概念与使用场景主要有以下几点 1.初始化时,要显示的数据,不存在,需要通过计算操作得 2.执行的时机有2步: (1)初始化显示会执行一次(有特殊情况),拿到初始值,去显示.(2)当计算属性时 ...

最新文章

  1. Nginx源码分析--字符串处理
  2. python【Matlibplot绘图库】-主要概念
  3. 三次握手,四次挥手?
  4. win7 一些快捷系统工具命令
  5. c语言infile和outfile用法,C语言文件读写基本操作DEMO
  6. dijkstra算法优化
  7. java包命名规则名词_java中命名规范
  8. ORACLE经常使用系统查询
  9. JS前端常用工具方法
  10. Asp.Net IIS 管理类(全)
  11. ZBrush for Mac的插图技巧
  12. 管理新语:新员工进来,竟然连起码的技能培训都没有
  13. matlab leslie模型,【2017年整理】leslie人口增长模型模型.doc
  14. codeblocks下载安装与解决codeblocks找不到编译器的方法
  15. 测试cpu是否有问题的软件,cpu测试软件|CPU检测软件有哪些 5款CPU检测工具介绍
  16. 【毕业设计】基于单片机的心率血氧健康监测手表 - 物联网 嵌入式
  17. 【Agni-s Philosophy】使用的图形技术解说(后篇)Volume渲染和粒子处理
  18. springbooot使用google验证码
  19. “北上广深”的“收租婆”角色什么时候能够减少?
  20. 零售业100个创意促销方案

热门文章

  1. 卷积神经网络(CNN)中卷积的实现
  2. [BZOJ 4571][Scoi2016]美味(主席树)
  3. sqlite3简单操作
  4. Cocos2d-X字体
  5. C++生成简单WAV文件(一)
  6. 《Python核心编程》第二版第18页第一章练习 -Python核心编程答案-自己做的-
  7. Android学习之调用系统相机实现拍照功能
  8. Struts2之数据标签(一)
  9. Android的简介
  10. 【SpringCloud从0到6】 第二节:注册中心 - eureka