你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 《從零開始學Swift》學習筆記(Day 46)——下標重寫

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

編輯:IOS開發綜合
下標是一種特殊屬性。子類屬性重寫是重寫屬性的getter和setter訪問器,對下標的重寫也是重寫下標的getter和setter訪問器。
下面看一個示例:
classDoubleDimensionalArray {   
     
    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屬性。其中super.grid[(row * columns) + col] = newValue * newValue語句是給父類的grid屬性賦值

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved