学习来自《极客学院》

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

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

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

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

 import Foundation

 struct lengthRang {
var start:Int
//定义常量存储属性,可以不指定初始值
let length:Int
}
//创建结构体的实例变量
var len = lengthRang(start: , length: )
println("len的起点为\(len.start),长度为\(len.length)") //延迟存储属性:第一次被调用时候才会被计算初始值的属性,用lazy修饰符
//当某个实例是一个创建成本比较大的实例的引用的时候,使用延迟存储可以提高程序的性能
//延迟存储属性只能被定义成变量,也就是var关键字创建,所以不能用let创建 //计算属性:就是set和get方法的组合
/*语法格式
[修饰符] var 计算属性名:属性类型{
get{
}
set(形参名){
}
}
*/ class User {
var first:String = ""
var last:String = ""
//定义计算属性
var fullName:String{
//定义计算属性的getter方法,该方法的返回值由first、last两个存储属性决定
get{
return first + "_" + last
}
//定义计算属性的setter方法
set(newValue){
var names = newValue.componentsSeparatedByString("_")
self.first = names[]
self.last = names[]
}
}
init(first:String,last:String){
self.first = first
self.last = last
}
}
//创建一个实例
let s = User(first: "heyang", last: "hello")
println(s.fullName)
s.fullName = "何杨_你好"
println(s.fullName)
//只读属性,则无需set部分,可以省略get和花括号 //属性观察者
/*
1.除了延迟存储属性之外的所有存储属性(包括实例存储属性和类型存储属性)
2.可通过重载方式为继承得到的属性(包括存储属性和计算属性)添加属性观察者
*/
//其实属性观察者就是 两个特殊的回调方法
/*
[修饰符]var 计算属性名:属性类型 = 初始值{
wilSet(newValue){
//属性即将被赋值之前自动调用的方法
}
didSet(oldValue){
//属性呗赋值完成之后自动调用的方法
}
}
*******参数可以省略*********
*/
class Person {
//定义存储属性
var name:String = ""{
willSet{
if(count(newValue)>) || (count(newValue)<){
println("您设置的人名字\(newValue)不符合要求,请重新设置")
}else{
println("人名符合要求,设置成功")
}
}
didSet{
println("人名设置完成,被修改的原名为:\(oldValue)")
}
}
var age:Int = {
willSet{
if newValue> || newValue<{
println("您设置的年龄\(newValue)不符合要求,请重新设置!")
}
else{
println("年龄设置符合要求,设置成功。")
}
}
didSet{
println("年龄设置完成,被修改的年龄为\(oldValue)")
}
}
}
//然后是创建实例
var p = Person()
p.name = "张三"
p.age =
println("\(p.name)")

运行结果:

Swift面向对象基础(中)——Swift中的存储属性和计算属性的更多相关文章

  1. Swift编程语言学习9—— 存储属性和计算属性

    属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性能够用于类.结构体和枚举里,存储属性仅仅能用于类和结构体. 存储属性和计算属性通经 ...

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

    写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类 ...

  3. swift 存储属性和计算属性 set{}和get{} didSet{}和willSet{}

    首先我们看一段代码: var A:Int = 0 var B:Int = 0 var C:Int { get { return 1 } set { print("Recived new va ...

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

    学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...

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

    学习来自<极客学院> 1.定义方法需要在类型(枚举,结构体,类)里定义,不能独立定义,独立定义的是函数 2.方法要么属于该类型本身,要么是该类型的一个实例 3.不能独立执行方法,执行方法必 ...

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

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

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

    学习来自<极客学院> import Foundation class User { var name:String var age:Int init(name:String,age:Int ...

  8. iOS中 Swift初级入门学习(三)

    // // main.swift // LessonSwift-03 // // Copyright (c) 2015年 韩俊强. All rights reserved. // import Fou ...

  9. iOS - Swift 面向对象语法

    1.面向对象 面向过程:面向过程编成将所要解决的问题按解决问题的步骤进行分析.如果是大问题,就分解成为多个不同的小问题,在程序里叫做划分成不同的模块.每一个解决的步骤可能是一行或者几行代码,也可能是一 ...

随机推荐

  1. Entity Framework增删改之通用精简方法

    用EF用了好长一段时间了,从EF4.0的版本开始接触,感觉这个ORM不能说性能是最好的,但是我个人感觉功能实现以及和mvc的结合还是一个不错的企业级网站的解决方案,在此写个简易的通用扩展方法来方便大家 ...

  2. DDD:建模原语 之 四象图(转载的神文)

    “模型.状态和行为特征.场景”和“四象图”,建模观的命名与立象. 建模原语:四象图 作者:achieveidea@gmail.com 命名:模型.结构特征.行为特征.场景(及其规约). 释义:模型,描 ...

  3. Unity3D 敌人AI 和 动画( Animator )系统的实例讲解

    在这个实例中,我们要做一些敌人AI的简单实现,其中自动跟随和动画是重点,我们要达到的目标如下: 1.敌人能够自动跟随主角 2.敌人模型一共有四个动作:Idle(空闲) Run(奔跑) Attack(攻 ...

  4. Watch out for these 10 common pitfalls of experienced Java developers & architects--转

    原文地址:http://zeroturnaround.com/rebellabs/watch-out-for-these-10-common-pitfalls-of-experienced-java- ...

  5. iOS-微信-分享

    一.微信原生的分享--准备工作. 1. 需要申请微信AppId. 2. 导入系统架包. SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h,WechatAuthS ...

  6. GPUImage滤镜之自然饱和度

    自然饱和度”是图像整体的明亮程度,“饱和度”是图像颜色的鲜艳程度. “饱和度”与“色相/饱和度”命令中的“饱和度”选项效果相同,可以增加整个画面的“饱和度”,但如调节到较高数值,图像会产生色彩过饱和从 ...

  7. 【Coding地址汇总】2016年沈航软工学生项目主页

    同学们把自己的coding主页链接贴在评论里,要求格式"班号+学号+coding主页链接",如: "1301+13061193 + https://coding.net/ ...

  8. nodejs+express+jade+mongodb给我baby做个小相册(2)-留言板

    上一篇简单的实现了下照片的展现跟浏览功能,这一篇我将给这个程序添加一个留言的功能.那么留言的话肯定要涉及到数据持久了,其实对于这个小功能的话,用个xml就可以,不过为了看起来更加高大上,我决定使用mo ...

  9. 微软参考源代码 referencesource.microsoft.com

    微软参考源代码 http://referencesource.microsoft.com/ referencesource 下载地址 https://github.com/Microsoft/refe ...

  10. 重构第19天 提取工厂类(Extract Factory Class)

    理解:本文中的“提取工厂类”是指如果要创建的对象很多,则代码会变的很复杂.一种很好的方法就是提取工厂类. 详解:一般来说我们需要在代码中设置一些对象,以便获得它们的状态,从而使用对象,所谓的设置通常来 ...