extension Double {
var km: Double { return self * 1000.0 }
var m: Double { return self }
var cm: Double { return self / 100.0 }
var mm: Double { return self / 1000.0 }
var ft: Double { return self / 3.28084 }
}
// 扩展
let km = 25.4.km
km // 25,400.0
struct Size {
var width = 0.0
var height = 0.0
}
struct Point {
var x = 0.0
var y = 0.0
}
struct Rect {
var origin = Point()
var size = Size()
}
// 扩展构造器
extension Rect {
init(center: Point, size: Size) {
let originX = center.x - (size.width / 2)
let originY = center.y - (size.height / 2)
self.init(origin: Point(x: originX, y: originY), size: size)
}
}
let centerRect = Rect(center: Point(x: 4.0, y: 4.0), size: Size(width: 3.0, height: 3.0))
centerRect.origin // {x 2.5, y 2.5}
centerRect.size // {width 3.0, height 3.0}
// 扩展方法
extension Int {
func repetitions(task: ()->()) {
for i in 0..<self {
task()
}
}
}
4.repetitions({ () -> () in println("hello") })
// hello
// hello
// hello
// hello
// trailing 闭包
3.repetitions{
println("hello swift")
}
// 修改实例的方法
extension Int {
mutating func square() {
self = self * self
}
}
var someInt = 4
someInt.square()
someInt //16
// 扩展下标
extension Int {
subscript(digitIndex: Int) -> Int {
var decimalBase = 1
for _ in 1...digitIndex {
decimalBase *= 10
}
return (self / decimalBase) % 10
}
}
123456[1] // 返回 5
Swift扩展(Extensions)
最新推荐文章于 2024-09-19 16:21:02 发布