美文网首页
Swift 方法协议

Swift 方法协议

作者: Cz1024 | 来源:发表于2017-08-14 20:48 被阅读1次

    方法协议

    作用:让一个类/结构体/枚举的方法,分解为更小的组合,从而更具有灵活性

    1. 类型方法协议,前面加上static修饰
    protocol AProtocol {
        static func aFun()
    }
    
    //class A:AProtocol {
    //    static func aFun() {
    //        
    //    }
    //}
    
    
    class A:AProtocol {
        class func aFun() {
            print("AProtocol");
        }
    }
    
    class B:A {
        
    }
    
    B.aFun() //B直接调用
    

    //类型协议,为了让子类继承父类的方法 ,可以将实现方法 static 修饰改为class修饰

    2.实例方法协议
    //有一个产生随机数的协议
    protocol RandomOpertable {
        func makeRandomInt() -> Int
    }
    
    struct MakeRandomInt:RandomOpertable {
        func makeRandomInt() -> Int {
            return Int(arc4random())
        }
    }
    
    let random1 = MakeRandomInt()
    random1.makeRandomInt()
    
    //如果此时,产生随机数的要求变了,现在要求产生的随机数在1-6之间,那么为了不修改原来写的大量的代码,只要我们再重新定义一个结构,修改实现协议方法
    
    struct MakeRandomIntMaxSix:RandomOpertable {
        func makeRandomInt() -> Int {
            return Int(arc4random())%6 + 1
        }
    }
    
    let random2 = MakeRandomIntMaxSix()
    
    random2.makeRandomInt()
    

    .......

    //枚举 如果修改自己类型属性的值,需要mutating修饰
    protocol Switchable {
        mutating func OnOff()
    }
    
    enum MySwitch:Switchable {
        case on,off
        mutating func OnOff() {
            switch self {  //self指修改自己的值
            case .off:
                self = .on
            default:
                self = .off
            }
        }
    }
    
    var mySwitch = MySwitch.off
    
    mySwitch.OnOff()
    
    print(mySwitch)
    
    

    相关文章

      网友评论

          本文标题:Swift 方法协议

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