Swift- Extension

2017-02-21  本文已影响0人  lxl125z

扩展属性(只能是计算属性)

//扩展可以添加新计算属性, 但是不能添加存储属性(也不可以添加属性观察).  
extension Double{  //为API中的已有类型添加实例属性  
    var km : Double { return self * 1_000.0 }  
}  
  
let jjLength = 1.m  // 1与m进行点运算, 表示1的Double值  

扩展构造器

//可以定制自己的构造器  
class MyClass{  
    var a : Int  
    init(){  
        a = 10  
    }  
}  
  
extension MyClass{  
    convenience init(var parm:Int){   //扩展构造器  
        self.init()  
        println("扩展构造器--->便利构造器, \(parm)")  
    }  
}  
  
var myClass = MyClass(parm: 9)  

扩展方法

通过扩展方法, 可以修改该实例self本身.但是方法前要加 mutating

extension Double{  
    mutating func myMoidfySelfValue{  
        self = self * self //修改self实例的值  
    }  
}  
  
var d = 2.0  
d.myMoidfySelfValue()

扩展下标

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
        }
    }
}

上一篇 下一篇

猜你喜欢

热点阅读