swift 擴展(extension)

擴展(Extension)用于為已存在的類、結(jié)構(gòu)題或枚舉等類型添加新的功能。
可以擴展計算型屬性、構(gòu)造函數(shù)、方法、下標腳本等。

extension Int{
    var km:Int{
        return self*1000
    }
    var minute:Int{
        return self*60
    }
    //定義普通方法
    func legs() -> Int{
        return self*4
    }
    //定義可變方法  這樣的方法里邊可以修改變量的值,普通方法則不行
    mutating func leg(){
        self = self*4
    }
}
print("1公里=",1.km,"米")
print("1小時=",1.minute,"分鐘")
let legs = 1.legs()
print("羊有",legs,"條腿")
var leg = 1
leg.leg()
print("羊有",leg,"條腿")

struct Size{
    var width = 0.0
    var height = 0.0
}

struct Center{
    var x = 0.0
    var y = 0.0
}

struct Rect{
    var size = Size()
    var center = Center()
}

var Rect1 = Rect()
print(Rect1)

var Rect2 = Rect(size:Size(width:1, height:2), center:Center(x:3, y:4))
print(Rect2)

extension Rect{
    init(center:Center){//注意這里擴展的構(gòu)造函數(shù)不能跟原有的一樣,也就是說必須要換參數(shù)
        let width = 44
        let height = 55
        self.init(size: Size(width:Double(width), height:Double(height)), center: center)
    }
}
//在為類類型擴展構(gòu)造函數(shù)時,只可以擴展便利構(gòu)造函數(shù),指定構(gòu)造函數(shù)必須由原始的類實現(xiàn)來提供。

控制臺:

1公里= 1000 米
1小時= 60 分鐘
羊有 4 條腿
羊有 4 條腿
Rect(size: __lldb_expr_29.Size(width: 0.0, height: 0.0), center: __lldb_expr_29.Center(x: 0.0, y: 0.0))
Rect(size: __lldb_expr_29.Size(width: 1.0, height: 2.0), center: __lldb_expr_29.Center(x: 3.0, y: 4.0))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容