Swift- Extension

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

//扩展可以添加新计算属性, 但是不能添加存储属性(也不可以添加属性观察).  
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
        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,489评论 1 10
  • 132.转换错误成可选值 通过转换错误成一个可选值,你可以使用 try? 来处理错误。当执行try?表达式时,如果...
    无沣阅读 5,139评论 0 3
  • Swift属性 Swift属性将值跟特定的类,结构体,枚举关联。分为存储属性和计算属性,通常用于特定类型的实例。属...
    小小厨师阅读 4,417评论 0 0
  • 1、范型范型所解决的问题 函数、方法、类型:类,结构体,枚举,元组类型,协议参数,返回值,成员函数参数,成员属性类...
    我是小胡胡123阅读 4,365评论 0 1
  • 常量与变量使用let来声明常量,使用var来声明变量。声明的同时赋值的话,编译器会自动推断类型。值永远不会被隐式转...
    莫_名阅读 3,318评论 0 1

友情链接更多精彩内容