Swift面向对象基础(中)——Swift中的存储属性和计算属性

1、存储属性:存储在类、结构体里的变量或者常量

2、分为:实例存储属性、类型存储属性

3、所有的存储属性必须显示的指定初始值,在定义时或者构造器当中指定

4、可选类型的存储属性可以不指定初始值

Swift面向对象基础(中)——Swift中的存储属性和计算属性
 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中的存储属性和计算属性
上一篇:jQuery 特效实例_幽灵按钮4|学习笔记


下一篇:IOS之Foundation之探究学习Swift实用基础整理<一>