《從零開始學Swift》學習筆記(Day 51)——擴充套件建構函式
原創文章,歡迎轉載。轉載請註明:關東昇的部落格
擴充套件型別的時候,也可以新增新的建構函式。值型別與引用型別擴充套件有所區別。值型別包括了除類以外的其他型別,主要是列舉型別和結構體型別。
值型別擴充套件建構函式
擴充套件結構體型別中定義建構函式的示例:
struct Rectangle {
var width : Double
var height : Double
init(width : Double, height : Double) {
self.width = width
self.height = height
}
}
extension Rectangle { //定義了Rectangle的擴充套件型別
init(length : Double) {
self.init(width : length, height : length)
}
}
var rect = Rectangle(width : 320.0, height : 480.0) //呼叫兩個引數的建構函式,這個建構函式是原始型別提供, Rectangle型別已經是擴充套件型別
print("長方形:\(rect.width) x \(rect.height)")
var square = Rectangle(length: 500.0) //呼叫一個引數的建構函式,這個建構函式是擴充套件型別提供的
print("正方形:(square.width) x (square.height)")
self.init是呼叫了原始型別的兩個引數的建構函式。
引用型別擴充套件建構函式
擴充套件類中定義建構函式的示例:
class Person {
var name : String
var age : Int
func description() -> String {
return "\(name) 年齡是: \(age)"
}
init (name : String, age : Int) {
self.name = name
self.age = age
}
}
extension Person { //定義Person類的擴充套件型別
convenience init (name : String) { //便利建構函式
self.init(name : name, age : 8)
}
}
let p1 = Person(name : "Mary") //呼叫兩個引數的建構函式,這個建構函式是原始型別提供,這時候的Person型別已經是擴充套件型別。
print("Person1 : \(p1.description())")
let p2 = Person(name : "Tony", age : 28)// 呼叫一個引數的建構函式建立Person例項,這個建構函式是擴充套件型別提供的。
print("Person2 : \(p2.description())")
程式碼self.init(name : name, age : 8)呼叫指定建構函式代理部分構造任務。
歡迎關注關東昇新浪微博@tony_關東昇。 關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程資訊
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com 智捷課堂論壇網站:http://51work6.com/forum.php
相關文章
- 從零開始JAVA資料結構學習筆記(一)Java資料結構筆記
- PHP的Mhash擴充套件函式的學習PHP套件函式
- python Scrapy 從零開始學習筆記(一)Python筆記
- python Scrapy 從零開始學習筆記(二)Python筆記
- 從零開始構建並編寫神經網路【學習筆記】[2/2]神經網路筆記
- C#學習筆記(補充)——擴充套件方法、事件C#筆記套件事件
- PHP從零開始系列二(學習筆記):序言PHP筆記
- PHP從零開始系列一(學習筆記):前言PHP筆記
- 【從零開始學習 MySql 資料庫】(2) 函式MySql資料庫函式
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 從零開始學Electron筆記(一)筆記
- 從零開始學Electron筆記(三)筆記
- 從零開始構建並編寫神經網路---Keras【學習筆記】[1/2]神經網路Keras筆記
- 【教程】如何從零開始構建深度學習專案?深度學習
- C++學習筆記-----類和建構函式C++筆記函式
- 學習PHP中統計擴充套件函式的使用PHP套件函式
- C#學習筆記-方法引數、擴充套件方法C#筆記套件
- 擴充套件中國剩餘定理(EXCRT)學習筆記套件筆記
- day10學習筆記之函式上筆記函式
- PHP的命令列擴充套件Readline相關函式學習PHP命令列套件函式
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- PHP 手冊 (類與物件) 學習筆記五:建構函式和解構函式PHP物件筆記函式
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 從零開始學習機器學習機器學習
- 從零開始學習laravelLaravel
- 從零開始學習KafkaKafka
- ES6學習筆記4--字串的擴充套件筆記字串套件
- 從零開始學機器學習——構建一個推薦web應用機器學習Web
- C++學習筆記-C++對C語言的函式擴充C++筆記C語言函式
- iOS學習筆記42 Swift(二)函式和閉包iOS筆記Swift函式
- Kotlin-擴充套件函式use,forEachLine(第一行程式碼Kotlin學習筆記番外)Kotlin套件函式行程筆記
- 重學ES6 函式的擴充套件(上)函式套件
- 從零開始的Python學習 知識補充sortedPython
- 從EventBus學習擴充套件Weex事件機制套件事件
- Kotlin擴充套件函式Kotlin套件函式