美文网首页
Swift 协议作为类型使用

Swift 协议作为类型使用

作者: Cz1024 | 来源:发表于2017-08-16 11:27 被阅读17次

协议作为类型使用:可用于参数类型/返回类型;变量/常量/属性;集合类型中的元素类型

protocol RunProtocol {
    func runDistance(speed:Int) -> Int
}


struct People:RunProtocol {
    func runDistance(speed:Int) ->Int{
        return speed*100        
    }
}

class Dog :RunProtocol {
    func runDistance(speed:Int) ->Int{
        return speed*100        
    }
}

//跑步游戏
struct RunGame {
    var time:Int
    var runProtocol:RunProtocol   //协议作为属性
    var speed:Int
    func run() -> Int {
         return time*self.runProtocol.runDistance(speed:self.speed)
     }
}

let peopleGame = RunGame(time:20,runProtocol:People(),speed:2)
//let dogGame = RunGame(time:20,runProtocol:Dog(),speed:4)
print(game.run())

由上面的例子可以看出,无论结构体还是类,只要是实现了跑步协议,实现了其方法,其实例化都可以作为此协议充当跑步游戏的协议属性,去调用各自协议的实现方法

相关文章

网友评论

      本文标题:Swift 协议作为类型使用

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