《從零開始學Swift》學習筆記(Day 32)——計算屬性
原創文章,歡迎轉載。轉載請註明:關東昇的部落格
計算屬性本身不儲存資料,而是從其他儲存屬性中計算得到資料。
計算屬性概念:
計算屬性提供了一個getter(取值訪問器)來獲取值,以及一個可選的setter(設定訪問器)來間接設定 其他屬性或變數的值。計算屬性的語法格式如下:
物件導向型別 型別名 {
儲存屬性
......
var 計算屬性名: 屬性資料型別 {
get {
return 計算後屬性值
}
set (新屬性值) {
......
}
}
}
定義計算屬性比較麻煩,要注意後面的幾個大括號的對齊關係。
我們先看一個示例:
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{}程式碼也可以省略。與上一節相比,程式碼將大大減少。修改上一節示例為只讀計算屬性,程式碼如下:
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)
只讀計算屬性不能夠賦值,下列語句是錯誤的。
emp.fullName = "Tom.Guan"
歡迎關注關東昇新浪微博@tony_關東昇。 關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程資訊
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com 智捷課堂論壇網站:http://51work6.com/forum.php
相關文章
- python Scrapy 從零開始學習筆記(一)Python筆記
- python Scrapy 從零開始學習筆記(二)Python筆記
- PHP從零開始系列二(學習筆記):序言PHP筆記
- PHP從零開始系列一(學習筆記):前言PHP筆記
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 從零開始學Electron筆記(一)筆記
- 從零開始學Electron筆記(三)筆記
- 從零開始JAVA資料結構學習筆記(一)Java資料結構筆記
- 從零開始學習機器學習機器學習
- 從零開始學習laravelLaravel
- 從零開始學習KafkaKafka
- 如何從零開始學習Linux雲端計算的運維?Linux運維
- 從零開始機器學習機器學習
- 從零開始學五筆(一):概述
- 《Python深度學習從零開始學》簡介Python深度學習
- 從零開始機器學習-03機器學習
- 從零開始機器學習--4機器學習
- 從零開始機器學習--05機器學習
- 從零開始學習 Go ——安裝Go
- 從零開始學習C++(0)C++
- swift學習筆記《1》Swift筆記
- swift學習筆記《4》Swift筆記
- 從零開始的Unity個人學習日記(二)Unity
- 【esp32 學習筆記】(esp-idf 版本)從點燈開始——點亮LED筆記
- 從零開始學機器學習——線性和多項式迴歸機器學習
- 【從零開始學爬蟲】任務屬性配置中的兩點技巧爬蟲
- 從零開始學機器學習——瞭解聚類機器學習聚類
- 從零開始學機器學習——入門NLP機器學習
- 《谷歌JAX深度學習從零開始學》簡介谷歌深度學習
- 從零開始學PythonPython
- swift學習筆記《2》-swift語法Swift筆記
- Vue學習筆記(六):監視屬性Vue筆記
- 從頭開始的Java學習Day05Java
- 從零開始學習邏輯迴歸邏輯迴歸
- 從零開始學習如何部署程式碼