Swift  方法协议

方法协议:定义时没有花括号执行体,实现仅要求名称相同
作用:可以让一个类/机构提/枚举的方法,分解为更小的组合,从而更灵活


// 类型方法协议:前缀总是static  不能用class
protocol Amethod {
   static func foo()
}
class A: Amethod {
    static func foo() {
        print("aaaa")
    }
}
class A1: Amethod {
    class func foo() {
         print("A1A1A1")
    }
}

A.foo()
A1.foo()


import Foundation
// 实例方法协议
protocol  RandomGeneratable {
    func randomNumber() -> Int
}

struct RandomNumber : RandomGeneratable {
    func randomNumber() -> Int {
        return Int(arc4random())
    }
}

struct RandomNumberInSix : RandomGeneratable {
    func randomNumber() -> Int {
        return Int(arc4random())%6
    }
}

let random1 = RandomNumber()
random1.randomNumber()

let random2 = RandomNumberInSix()
random2.randomNumber()

// 结构体/枚举的“变异方法协议” mutating 方法协议更改属性的值 要加mutating
protocol Switchable {
   mutating func onOff()
}

enum mySwitch:Switchable {
   mutating func onOff() {
        switch self {
        case .off:
            self = .on
        default:
            self = .off
        }
    }
    case on,off
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 方法协议 作用:让一个类/结构体/枚举的方法,分解为更小的组合,从而更具有灵活性 1. 类型方法协议,前面加上st...
    Cz1024阅读 366评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • 基础部分(The Basics) 当推断浮点数的类型时,Swift 总是会选择Double而不是Float。 结合...
    gamper阅读 1,342评论 0 7
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,613评论 8 265
  • 1 前不久看到一个事儿,校园里一男生喜欢一姑娘,摆了蜡烛阵,找了小伙伴帮忙摆人形字母,然后姑娘下来了,给了丫一巴掌...
    进击的历史君阅读 1,700评论 0 0