Swift计算属性

一、计算属性的概念

计算属性本身不存储数据,而是从其它存储属性中计算得到数据,与存储属性不同,类、结构体、和枚举都可以定义计算属性

计算属性提供了一个getter来获取值,以及一个可选的setter来间接设置其它属性或变量的值,计算属性的语法如下:

面向对象类型 类型名{

存储属性...

var 计算属性名:属性数据类型{

get {

return 计算后属性值

}

set 新属性值{

}

}

示例:

class Employee {
            var no:Int = 0
            var firstName:String = ""
            var lastName:String = ""
            var job:String?
            var salary:Double = 0
            lazy var dept:Department = Department()
            var fullname:String{
                get{
                return firstName+"."+"lastName"
}
                set(newFullName)系统默认给的变量名为newvalue{
                    var name = newFullName.componentsSeperatedByString(".")
                    firstName = name[0]
                    lastName = name[1]
}
}
}

二、只读计算属性

计算属性可以只有getter访问器,没有setter访问器,这就是只读计算属性

示例:

class Employee {
            var no:Int = 0
            var firstName:String = ""
            var lastName:String = ""
            var job:String?
            var salary:Double = 0
            lazy var dept:Department = Department()
            var fullname:String{
                get{
                return firstName+"."+"lastName"
}
               
}
}

三、结构体和枚举中的计算属性

示例

struct Department {

let no:Int = 0

var name : String = "sales"

var fullName:String {

return "swift" + name + ".D"

}

}

var dept = Department()

println(dept.fullName)

enum WeekDays:String {

case Monday = "Mon"

case Tuesday = "Tue"

case Wednesday = "Wed"

case Thursday = "Thu"

case Friday = "Fri"

var message:String {

return "Today is"+self.rawValue

}

}

var day = WeekDays.Monday

println(day.message)

时间: 03-17

Swift计算属性的相关文章

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

写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法) 3)都能使用扩展(extension)与协议(protocol) 4)类与结构体(枚举)中的全局属性/方法:在类中用class关键字,但在结构体中

Swift::2::计算属性

计算属性(Computed Properties) 属性 属性一般用于类(class),结构体(struct),枚举(emun)作为存储数据,swift 的属性也像OC一样,拥有 getters 和 setters方法. 而所谓的计算属性,和一般的属性的区别,仅仅是它不存储数据,而是使用已有的属性(有存储作用的属性),进行运算,而后通过getter 和 setter 反馈结果. 下面是一个例子,例子中自定义一个时间类,类中,seconds 是唯一的存储属性,而miniutes,hours,day

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

写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法) 3)都能使用扩展(extension)与协议(protocol) 类比结构体多的功能: 1)能继承 2)运行时能检查类对象的类型 3)析构释放资源

swift学习笔记之--类的计算属性

1,Swift中类可以使用计算属性,即使用get和set来间接获取/改变其他属性的值,代码如下 class Calcuator{ var a:Int = 1; var b:Int = 1; var sum:Int{ get{ return a + b } set(val){ b = val - a } } } let cal = Calcuator(); print(cal.sum) //2 cal.sum = 5 print(cal.b) //4 2,对于set有简写方法,简写时,新赋的值默认

Swift 的存储属性和计算属性

属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性可以用于类.结构体和枚举里,存储属性只能用于类和结构体. 存储属性和计算属性通常用于特定类型的实例,但是,属性也可以直接用于类型本身,这种属性称为类型属性. 另外,还可以定义属性监视器来监控属性值的变化,以此来触发一个自定义的操作.属性监视器可以添加到自己写的存储属性上,也可以添加到从父类继承的属性上. 存储属性 简单来说,一个存储属性就是存储在特定类或结构体的实例里的一个常量或

Swift中对计算属性的理解和对之前的补充

这个功能的重点作用应该是在计算上. 对于一般的属性,要么直接存一个,要么直接读一个,计算属性则可以根据所设置内容,进行一些修改或计算之类的, 比如: import UIKit class sample { var no1 = 0.0, no2 = 0.0 var length = 300.0, breadth = 150.0 var middle:(Double,Double) { get { return(length / 2, breadth / 2) } // 如果没有加上括号, 那么默认

Swift 2.0学习笔记(Day 32)——计算属性

原创文章,欢迎转载.转载请注明:关东升的博客 计算属性本身不存储数据,而是从其他存储属性中计算得到数据. 计算属性概念: 计算属性提供了一个getter(取值访问器)来获取值,以及一个可选的setter(设置访问器)来间接设置其他属性或变量的值.计算属性的语法格式如下: 面向对象类型 类型名 { 存储属性 ...... var 计算属性名: 属性数据类型 { get { return 计算后属性值 } set (新属性值) { ...... } } } 定义计算属性比较麻烦,要注意后面的几个大括

《从零开始学Swift》学习笔记(Day 50)——扩展计算属性、方法

原创文章,欢迎转载.转载请注明:关东升的博客 可以在原始类型上扩展计算属性,包括实例计算属性和静态计算属性.添加计算属性的定义,与普通的计算属性的定义是一样的. 实例计算属性示例:在网络编程时,为了减少流量,从服务器端返回的不是信息描述,而是编码,然后在本地再将编码转换为描述信息.为此定义了如下Int类型扩展: extension Int {              //定义Int类型的扩展     var errorMessage : String {   //只读计算属性         

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

原创文章,欢迎转载.转载请注明:关东升的博客 计算属性本身不存储数据,而是从其他存储属性中计算得到数据. 计算属性概念: 计算属性提供了一个getter(取值访问器)来获取值,以及一个可选的setter(设置访问器)来间接设置其他属性或变量的值.计算属性的语法格式如下: 面向对象类型类型名 {       存储属性            ......     var 计算属性名: 属性数据类型 {     get {                              return 计算后