下标
類,結構和枚舉可以定義下标,它們是訪問集合,列表或序列的成員元素的快捷方式。您可以使用下标以索引設置和檢索值,而無需單獨的設置和檢索方法。例如,您可以将someArray [index]和Dictionary實例中的元素作為someDictionary [key]訪問Array實例中的元素。
您可以為單個類型定義多個下标,并根據傳遞給下标的索引值的類型選擇适當的下标超載。下标不限于單個維度,您可以使用多個輸入參數定義下标以适應您的自定義類型的需求。
下标語法
下标使您能夠通過在實例名稱後面的方括号中寫入一個或多個值來查詢某個類型的實例。它們的語法類似于實例方法語法和計算屬性語法。您可以使用subscript關鍵字編寫下标定義,并以與實例方法相同的方式指定一個或多個輸入參數和返回類型。與實例方法不同,下标可以是可讀寫或隻讀的。這種行為由getter和setter以與計算屬性相同的方式傳遞:
subscript(index: Int) -> Int {
get {
// return an appropriate subscript value here
}
矩陣中的值可以通過将行和列值傳遞給下标來設置,并用逗号分隔:
matrix[0, 1] = 1.5
matrix[1, 0] = 3.2
這兩個語句調用下标的設置器在矩陣的右上角位置(其中行為0且列為1)和位于左下角位置(其中行1和列為0)的位置設置值1.5:
Matrix下标的getter和setter都包含一個斷言,用于檢查下标的行和列值是否有效。 為了協助這些斷言,Matrix包含一個名為indexIsValid(row:column :)的便捷方法,它檢查請求的行和列是否在矩陣的邊界内:
func indexIsValid(row: Int, column: Int) -> Bool {
return row >= 0 && row < rows && column >= 0 && column < columns
}
如果您嘗試訪問矩陣範圍之外的下标,則會觸發斷言:
let someValue = matrix[2, 2]
// this triggers an assert, because [2, 2] is outside of the matrix bounds
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!