《從零開始學Swift》學習筆記(Day 46)——下標重寫

原創文章,歡迎轉載。轉載請註明:關東昇的博客 php

下標是一種特殊屬性。子類屬性重寫是重寫屬性的gettersetter訪問器,對下標的重寫也是重寫下標的gettersetter訪問器。java

下面看一個示例:微信

class DoubleDimensionalArray {             let rows: Int, columns: Int     var grid: [Int]          init(rows: Int, columns: Int) {         self.rows = rows         self.columns = columns         grid = Array(count: rows * columns, repeatedValue: 0)     }          subscript(row: Int, col: Int) -> Int {    //定義下標                  get {             return grid[(row * columns) + col]         }                  set {             grid[(row * columns) + col] = newValue         }     }                     //定義下標      }   class SquareMatrix: DoubleDimensionalArray {               override subscript(row: Int, col: Int) -> Int {   //重寫父類下標                  get {                       return super.grid[(row * columns) + col]             }                  set {                           super.grid[(row * columns) + col] = newValue * newValue          }                       } }   var ary2 = SquareMatrix(rows: 5, columns: 5)   for var i = 0; i < 5; i++ {     for var j = 0; j < 5; j++ {         ary2[i,j] = i + j     } }   for var i = 0; i < 5; i++ {     for var j = 0; j < 5; j++ {         print("\t\t \(ary2[i,j])")     }     print("\n") }

其中super.grid[(row * columns) + col]語句中使用super調用父類的grid屬性。ide

其中super.grid[(row * columns) + col] = newValue * newValue語句是給父類的grid屬性賦值。 網站

 

歡迎關注關東昇新浪微博@tony_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
 
更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:
http://www.zhijieketang.com
智捷課堂論壇網站:
http://51work6.com/forum.phpspa

相關文章
相關標籤/搜索