美文网首页
swift 扩展(extension)

swift 扩展(extension)

作者: BetterComingDay | 来源:发表于2017-06-27 23:52 被阅读16次

    扩展(Extension)用于为已存在的类、结构题或枚举等类型添加新的功能。
    可以扩展计算型属性、构造函数、方法、下标脚本等。

    extension Int{
        var km:Int{
            return self*1000
        }
        var minute:Int{
            return self*60
        }
        //定义普通方法
        func legs() -> Int{
            return self*4
        }
        //定义可变方法  这样的方法里边可以修改变量的值,普通方法则不行
        mutating func leg(){
            self = self*4
        }
    }
    print("1公里=",1.km,"米")
    print("1小时=",1.minute,"分钟")
    let legs = 1.legs()
    print("羊有",legs,"条腿")
    var leg = 1
    leg.leg()
    print("羊有",leg,"条腿")
    
    struct Size{
        var width = 0.0
        var height = 0.0
    }
    
    struct Center{
        var x = 0.0
        var y = 0.0
    }
    
    struct Rect{
        var size = Size()
        var center = Center()
    }
    
    var Rect1 = Rect()
    print(Rect1)
    
    var Rect2 = Rect(size:Size(width:1, height:2), center:Center(x:3, y:4))
    print(Rect2)
    
    extension Rect{
        init(center:Center){//注意这里扩展的构造函数不能跟原有的一样,也就是说必须要换参数
            let width = 44
            let height = 55
            self.init(size: Size(width:Double(width), height:Double(height)), center: center)
        }
    }
    //在为类类型扩展构造函数时,只可以扩展便利构造函数,指定构造函数必须由原始的类实现来提供。
    

    控制台:

    1公里= 1000 米
    1小时= 60 分钟
    羊有 4 条腿
    羊有 4 条腿
    Rect(size: __lldb_expr_29.Size(width: 0.0, height: 0.0), center: __lldb_expr_29.Center(x: 0.0, y: 0.0))
    Rect(size: __lldb_expr_29.Size(width: 1.0, height: 2.0), center: __lldb_expr_29.Center(x: 3.0, y: 4.0))
    

    相关文章

      网友评论

          本文标题:swift 扩展(extension)

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