swift 协议扩展基础
来源:互联网 发布:创业公司 程序员 编辑:程序博客网 时间:2024/06/05 16:42
//定义一个得分记录协议
protocol Record{
var wins:Int{get}
var losses:Int{get}
//胜率
func winningPercent() ->Double
}
//乒乓球比赛记录
class TableTennisRecord:Record,CustomStringConvertible{
var wins:Int =0
var losses:Int =0
func winningPercent() ->Double {
return (Double(wins)/Double(wins+losses))*100
}
var description:String{
returnString("Wins:\(wins) , Losses:\(losses)")
}
}
//羽毛球比赛记录
class BadmintonRecord:Record,CustomStringConvertible{
var wins:Int =0
var losses:Int =0
func winningPercent() ->Double {
return (Double(wins)/Double(wins+losses))*100
}
var description:String{
returnString("Wins:\(wins) , Losses:\(losses)")
}
}
let 马龙 =TableTennisRecord()
马龙.wins =11
马龙.losses =1
马龙.winningPercent()
let winningPercentStr = String(马龙.winningPercent())
if let lowerBound =winningPercentStr.range(of:".")?.lowerBound{
let winningPercent =winningPercentStr.substring(to: lowerBound)+"%"
}
let 林丹 =BadmintonRecord()
林丹.wins =21
林丹.losses =15
不难看出这几段有很多重复代码,这时协议的扩展就很重要了:
protocol Record:CustomStringConvertible{
var wins:Int{get}
var losses:Int{get}
}
//协议扩展
extension Record{
var description:String{
returnString("Wins:\(wins) , Losses:\(losses)")
}
var totalGame:Int{
returnwins+losses
}
//胜率
func winningPercent() ->Double {
return (Double(wins)/Double(totalGame))*100
}
//显示赢的次数(默认实现为返回赢的次数)
func showWins() ->Int{
returnwins
}
}
//乒乓球比赛记录
class TableTennisRecord:Record{
var wins:Int =0
var losses:Int =0
func showWins() {
print("Ping pang wins\(wins)")
}
}
//羽毛球比赛记录
class BadmintonRecord:Record{
var wins:Int =0
var losses:Int =0
}
let 马龙 =TableTennisRecord()
马龙.wins =11
马龙.losses =1
马龙.winningPercent()
马龙.showWins()//Ping pang wins 11
let winningPercentStr = String(马龙.winningPercent())
if let lowerBound =winningPercentStr.range(of:".")?.lowerBound{
let winningPercent =winningPercentStr.substring(to: lowerBound)+"%"
}
let 林丹 =BadmintonRecord()
林丹.wins =21
林丹.losses =15
林丹.showWins()//21
- swift 协议扩展基础
- swift 协议和扩展
- Swift-协议和扩展
- swift协议、扩展
- OC转Swift之基础篇(四)--协议&扩展
- Swift基础 扩展
- swift继承 多态 扩展 协议
- 学习swift《swift简述协议和扩展》
- swift基础之协议
- Swift基础 协议
- Swift学习小结之协议和扩展
- Swift中扩展extension与协议protocol
- swift学习笔记 -- 协议和扩展
- swift学习日记(十一) 扩展 协议
- Swift快速入门之协议与扩展
- [Swift 开发] 协议扩展(protocol Extension)
- Swift的protocol与协议扩展
- Swift初体验-协议和扩展
- Cocoapods最新版本1.2.0引入Alamofire编译有时出错的解决办法
- 第十五周OJ(8)统计字符串种类
- 微信企业号开发:接收消息和事件
- 堆和栈的异同点
- WEB API 随笔
- swift 协议扩展基础
- javaDynamicComplider
- 汽车的匿名构造
- Oracle11G impdp,empdp导入导出数据库操作流程
- 第十五周oj题目统计字符串种类
- linux上安装matlab
- 随记录 之 Spring 自学笔记(一) -- IOC(一)
- VisualSVN:允许修改svn提交日志(pre-revpro-change hook)
- 欢迎使用CSDN-markdown编辑器