《从零开始学Swift》学习笔记(Day 50)――扩展计算属性、方法

前端之家收集整理的这篇文章主要介绍了《从零开始学Swift》学习笔记(Day 50)――扩展计算属性、方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原创文章,欢迎转载。转载请注明:关东升的博客

可以在原始类型上扩展计算属性包括实例计算属性和静态计算属性添加计算属性的定义,与普通的计算属性的定义是一样的。

实例计算属性示例:在网络编程时,为了减少流量,从服务器端返回的不是信息描述,而是编码,然后在本地再将编码转换为描述信息。为此定义了如下Int类型扩展:

  1. extensionInt{//定义Int类型的扩展
  2. varerrorMessage:String{//只读计算属性
  3. varerrorStr=""
  4. switch(self){
  5. case-7:
  6. errorStr="没有数据。"
  7. case-6:
  8. errorStr="日期没有输入。"
  9. case-5:
  10. errorStr="内容没有输入。"
  11. case-4:
  12. errorStr="ID没有输入。"
  13. case-3:
  14. errorStr="据访问失败。"
  15. case-2:
  16. errorStr="您的账号最多能插入10条数据。"
  17. case-1:
  18. errorStr="用户不存在,请到http://51work6.com注册。"
  19. default:
  20. errorStr=""
  21. }
  22. returnerrorStr
  23. }
  24. }
  25. letmessage=(-7).errorMessage//获得-7编码对应的描述信息
  26. print("ErrorCode:-7,ErrorMessage:\(message)")


注意整个-7包括负号是一个完整的实例,因此调用它的属性时需要将-7作为一个整体用小括号括起来。然而,如果是7则不需要括号。

下面再看一个静态属性的示例:

  1. structAccount{//定义Account结构体
  2. varamount:Double=0.0//账户金额
  3. varowner:String=""//账户名
  4. }
  5.  
  6. extensionAccount{//定义Account结构体的扩展静态
  7. staticvarinterestRate:Double{//利率
  8. return0.0668
  9. }
  10. }
  11.  
  12. print(Account.interestRate)//打印输出interestRate属性


打印输出interestRate属性,访问方式与其他的静态计算属性一样,通过“类型名”加“.”来访问静态计算属性

扩展方法

可以在原始类型上扩展方法包括实例方法和静态方法。这些添加方法的定义与普通方法的定义是一样的。

下面先看一个示例:

  1. extensionDouble{//定义Double类型的扩展
  2. staticvarinterestRate:Double=0.0668//利率
  3. funcinterestBy1()->Double{
  4. returnself*Double.interestRate//静态属性利率
  5. }
  6. mutatingfuncinterestBy2(){//定义实例方法interestBy2
  7. self=self*Double.interestRate
  8. }
  9. staticfuncinterestBy3(amount:Double)->Double{//定义静态方法interestBy3
  10. returninterestRate*amount//返回值是计算利息结果
  11. }
  12. }
  13.  
  14. letinterest1=(10_000.00).interestBy1()//调用interestBy1方法计算利息
  15. print("利息1:\(interest1)")
  16.  
  17. varinterest2=10_000.00//调用interestBy2方法计算利息
  18. interest2.interestBy2()
  19. print("利息2:\(interest2)")
  20.  
  21. varinterest3=Double.interestBy3(10_000.00)//调用interestBy3方法计算利息
  22. print("利息3:\(interest3)")


代码self = self *Double.interestRate,把计算结果直接赋值给当前实例self。在结构体和枚举类型中给self赋值会有编译错误,需要在方法前面加上mutating关键字,表明这是变异方法

调用interestBy1方法计算利息,调用它的实例10_000.00,它的返回值被赋值给interest1常量,这是很常见的调用过程。

调用interestBy2方法计算利息,我们不能使用10_000.00实例调用,而是需要一个Double类型的变量interest2interestBy2是变异方法,它会直接改变变量interest2的值,因此interest2.interestBy2()语句调用完成后,变量interest2的值就改变了。

调用interestBy3方法计算利息,它是静态方法调用它需要以“类型名.”的方式即“Double.”的方式调用

欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

wKioL1bZFcvAO2hFAAAs2MBEZnc814.png

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php

猜你在找的Swift相关文章