《从零开始学Swift》学习笔记(Day 46)――下标重写

前端之家收集整理的这篇文章主要介绍了《从零开始学Swift》学习笔记(Day 46)――下标重写前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

下标是一种特殊属性。子类属性重写是重写属性gettersetter访问器,对下标的重写也是重写下标的gettersetter访问器。

下面看一个示例:

  1. classDoubleDimensionalArray{
  2.  
  3. letrows:Int,columns:Int
  4. vargrid:[Int]
  5.  
  6. init(rows:Int,columns:Int){
  7. self.rows=rows
  8. self.columns=columns
  9. grid=Array(count:rows*columns,repeatedValue:0)
  10. }
  11.  
  12. subscript(row:Int,col:Int)->Int{//定义下标
  13.  
  14. get{
  15. returngrid[(row*columns)+col]
  16. }
  17.  
  18. set{
  19. grid[(row*columns)+col]=newValue
  20. }
  21. }//定义下标
  22.  
  23. }
  24.  
  25. classSquareMatrix:DoubleDimensionalArray{
  26.  
  27. overridesubscript(row:Int,col:Int)->Int{//重写父类下标
  28.  
  29. get{
  30. returnsuper.grid[(row*columns)+col]
  31. }
  32.  
  33. set{
  34. super.grid[(row*columns)+col]=newValue*newValue
  35. }
  36. }
  37. }
  38.  
  39. varary2=SquareMatrix(rows:5,columns:5)
  40.  
  41. forvari=0;i<5;i++{
  42. forvarj=0;j<5;j++{
  43. ary2[i,j]=i+j
  44. }
  45. }
  46.  
  47. forvari=0;i<5;i++{
  48. forvarj=0;j<5;j++{
  49. print("\t\t\(ary2[i,j])")
  50. }
  51. print("\n")
  52. }


其中super.grid[(row * columns) + col]语句中使用super调用父类grid属性

其中super.grid[(row * columns) + col] = newValue * newValue语句是给父类grid属性赋值。

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

wKioL1bZE4OgJHk2AAAs2MBEZnc283.png

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

猜你在找的Swift相关文章