擴(kuò)展屬性(只能是計(jì)算屬性)
//擴(kuò)展可以添加新計(jì)算屬性, 但是不能添加存儲(chǔ)屬性(也不可以添加屬性觀察).
extension Double{ //為API中的已有類型添加實(shí)例屬性
var km : Double { return self * 1_000.0 }
}
let jjLength = 1.m // 1與m進(jìn)行點(diǎn)運(yùn)算, 表示1的Double值
擴(kuò)展構(gòu)造器
//可以定制自己的構(gòu)造器
class MyClass{
var a : Int
init(){
a = 10
}
}
extension MyClass{
convenience init(var parm:Int){ //擴(kuò)展構(gòu)造器
self.init()
println("擴(kuò)展構(gòu)造器--->便利構(gòu)造器, \(parm)")
}
}
var myClass = MyClass(parm: 9)
擴(kuò)展方法
通過擴(kuò)展方法, 可以修改該實(shí)例self本身.但是方法前要加 mutating
extension Double{
mutating func myMoidfySelfValue{
self = self * self //修改self實(shí)例的值
}
}
var d = 2.0
d.myMoidfySelfValue()
擴(kuò)展下標(biāo)
extension Int {
enum Kind {
case Negative, Zero, Positive
}
var kind: Kind {
switch self {
case 0:
return .Zero
case let x where x > 0:
return .Positive
default:
return .Negative
}
}
}
嵌套類型
extension Int {
enum Kind {
case Negative, Zero, Positive
}
var kind: Kind {
switch self {
case 0:
return .Zero
case let x where x > 0:
return .Positive
default:
return .Negative
}
}
}