《從零開始學Swift》學習筆記(Day 32)——計算屬性

原創文章,歡迎轉載。轉載請註明:關東昇的博客php

計算屬性自己不存儲數據,而是從其餘存儲屬性中計算獲得數據。java

計算屬性概念:微信

計算屬性提供了一個getter(取值訪問器)來獲取值,以及一個可選的setter(設置訪問器)來間接設置其餘屬性或變量的值。計算屬性的語法格式以下:網站

面向對象類型 類型名 {  
    存儲屬性    
    ......
    var 計算屬性名: 屬性數據類型 { 
    get {             
        return 計算後屬性值   
    }           
           set (新屬性值) {      
            ......
    }         
            }                     
            }


定義計算屬性比較麻煩,要注意後面的幾個大括號的對齊關係。spa

咱們先看一個示例:.net

import Foundation   
class Employee {
    var no: Int = 0
    var firstName: String = "Tony"    //存儲屬性
    var lastName: String = "Guan" //存儲屬性
    var job: String?
    var salary: Double = 0
    lazy var dept: Department = Department()
    var fullName: String {    //計算屬性
    get {
        return firstName + "." +
lastName      //返回拼接的結果
    }
    set (newFullName) {   //存儲傳遞進來的參數值
        var name =
newFullName.componentsSeparatedByString(".")   
        firstName = name[0]
        lastName = name[1] 
    }
    }
}
struct Department {
    let no: Int = 0
    var name: String = ""
}
var emp = Employee()
print(emp.fullName)      //取出屬性值
emp.fullName =
"Tom.Guan"    //給屬性賦值
print(emp.fullName)

  

只讀計算屬性:設計

計算屬性能夠只有getter訪問器,沒有setter訪問器,這就是只讀計算屬性。指定計算屬性不只不用寫setter訪問器,並且get{}代碼也能夠省略。與上一節相比,代碼將大大減小。修改上一節示例爲只讀計算屬性,代碼以下:code

class Employee {
    var no: Int = 0
    var firstName: String = "Tony"
    var lastName: String = "Guan"
    var job: String?
    var salary: Double = 0
    lazy var dept: Department = Department()
    var fullName: String {    //簡潔的setter訪問器
        return firstName + "." +
lastName
    }    
}
struct Department {
    let no: Int = 0
    var name: String = ""
}
var emp = Employee()
print(emp.fullName)

只讀計算屬性不可以賦值,下列語句是錯誤的。component

emp.fullName = "Tom.Guan" 對象


歡迎關注關東昇新浪微博@tony_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
 

更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php

相關文章
相關標籤/搜索