Swift学习笔记-扩展

作者: 土豆吞噬者 | 来源:发表于2018-10-31 21:51 被阅读5次

    扩展能给已有的类型(即使没有源代码)添加功能,包括计算属性,协议,初始化方法,新方法,嵌入类型,注意,扩展不允许添加存储属性

    类型别名

    使用typealias关键字可以给类型提供一个别名,例如下面代码中的XYString,它和String用法一样

    import Foundation
    
    typealias XYString = String
    var str1:XYString="abcdefg"
    print(str1.uppercased())//ABCDEFG
    

    扩展计算属性

    使用extension关键字用于扩展一个类型,下面的Double类型被添加了一个计算属性perimeter

    extension Double{
        var perimeter:Double{
            return self * 3.14
        }
    }
    var d:Double=2.0
    print(d.perimeter)
    

    扩展使类型符合协议

    import Foundation
    
    
    protocol Person {
        var height:Int{get}
        var color:String{get}
    }
    
    extension Double:Person{
        var height:Int{
            return 170
        }
        var color:String{
            return "black"
        }
    }
    

    扩展初始化方法

    扩展初始化方法时可以调用原有类型的初始化方法

    import Foundation
    
    extension Double{
        init (height:Double,weight:Double){
            self.init(exactly: height*2+weight*2)!
        }
    }
    
    var height:Double=5.0
    var weight:Double=4.0
    let result:Double=Double.init(height: height, weight: weight)
    print(result)//18.0
    

    扩展中添加嵌套类型

    import Foundation
    
    extension Double{
        enum Kind{
            case big
            case middle
            case small
        }
        var kind:Kind{
            if self < 5.0{
                return Kind.small;
            }else if self < 10.0{
                return Kind.middle
            }else{
                return Kind.big
            }
        }
    }
    
    var height:Double=5.0
    print(height.kind)
    

    扩展方法

    import Foundation
    
    extension Double{
        func getPI() -> Double{
            return 3.14
        }
    }
    
    var height:Double=5.0
    print(height.getPI())
    

    相关文章

      网友评论

        本文标题:Swift学习笔记-扩展

        本文链接:https://www.haomeiwen.com/subject/lxmztqtx.html