詳解Swift程式設計中下標的用法

2022-09-21 08:54:12 字數 3593 閱讀 8108

訪問乙個集合的元素成員,在類中的序列和列表,結構和列舉都可以使用下標。這些下標用於儲存和使用索引來檢索值。陣列元素可使用如:somearray[index],在 dictionary 例項及其後續成員元素的訪問也可以使用如:somedicitonary[key]。

對於單一型別,下標範圍可以從單一到多個宣告。我們可以用適當的下標過載傳遞給下標索引值的型別。下標也可以根據輸入資料型別宣告範圍從單一維度到多維度。

下標宣告語法和用法

讓我們回顧一下計算屬性。下標也遵循計算屬性相同的語法。對於查詢型別的例項下標括在方括號內,接著是例項名稱。下標語法遵循結構作為 「例項方法」 和 「計算屬性」 相同的語法。「subscript」 關鍵字用來定義標,使用者可以指定乙個或多個引數,它們帶有返回型別。下標可以有讀寫或唯讀屬性和例項儲存和檢索使用 「getter」 和 「setter」 屬性作為計算屬性。

語法複製** **如下:

subscript(index:int)->intset(newvalue)}

示例1複製** **如下:

struct subexample }let division = subexample(decrementer:100)

println("the numberosiphgikho is divisible by \(division[9]) times")

println("the number is divisible by \(division[2]) times")

println("the number is divisible by \(division[3]) times")

println("the number is divisible by \(division[5]) times")

println("the number is divisible by \(division[7]) times")

當我們使用 playground 執行上面的程式,得到以下結果

the number is divisible by 11 times

the number is divisible by 50 times

the number is divisible by 33 times

the number is divisibosiphgikhole by 20 times

the number is divisible by 14 times

示例2複製** **如下:

class daysofaweek set(newvalue)}}var p = daysofaweek()

println(p[0])

println(p[1])

println(p[2])

println(p[3])

當我們使用 playground 執行上面的程式,得到以下結果

sunday

monday

tuesday

wednesday

下標選項

下標採用單一到多元的輸入引數,這些輸入引數也屬於任意資料型別。還可以使用變數,可變引數的引數。下標不能提供預設引數值,或使用任何 in-out 引數。

定義多個標被稱為「下標過載'在乙個類 或結構體根據需要可以提供多個下標定義。這些多個標是基於被下標括號內宣告值的型別推斷。

複製** **如下:

structmatrix

subscript(row:int, column:int)->doubleset}}var mat =matrix(rows:3, columns:3)

mat[0,0]=1.0

mat[0,1]=2.0

mat[1,0]=3.0

mat[1,1]=5.0

println("\(mat[0,0])")

println("\(mat[0,1])")

println("\(mat[1,0])")

println("\(mat[1,1])")

當我們使用 playground 執行上面的程式,得到以下結果

1.02.03.0

5.0swift 下標支援單引數到多引數宣告相應資料型別。該程式宣告的「矩陣」結構為2*2維陣列矩陣來儲存 「double」 資料型別。 矩陣引數被輸入整數資料型別用來宣告行和列。

矩陣新例項是通過使行和列數來初始化建立的,如下所示。

複製** **如下:

var mat = matrix(rows: 3, columns: 3)

矩陣值可通過傳遞行和列值到下標,通過逗號隔開,進行定義如下所示。

複製** **如下:

mat[0,0] = 1.0 

mat[0,1] = 2.0

mat[1,0] = 3.0

mat[1,1] = 5.0

下標方法的定義

下標方法的定義語法與例項方法和計算屬性的語法類似。

下標方法使用subscript關鍵字來指示是乙個下標方法。與例項方法一樣,下標方法定義中可以規定乙個或多個輸入引數,並帶有乙個返回型別。與例項方法不同的是下標方法可以是可讀寫的或是唯讀的。與計算屬性的定義osiphgikho一樣,下標方法通過使用getter和setter來傳達下標方法的行為。如果在下標方法的定義中getter和setter都被指定,則定義了乙個可讀寫的下標方法,如果下標方法的定義中不包含setter,則定義了乙個唯讀的下標方法,並且這時代表getter方法的關鍵字get也可以省略。下標方法定義的完整語法如下:

複製** **如下:

subscript(index:int) ->int

set(newvalue)

}     該例定義了乙個可讀寫的下標方法,newvalue可以指定,也可以不指定,不指定時使用預設的引數名newvalue。

如下例子展示了乙個唯讀下標方法的定義和使用。由於唯讀下標方法只指定乙個getter,意義是明確的,因此可以省略get關鍵字。

struct timestable

}let threetimestable =timestable(multiplier:3)

println("six times three is\(threetimestable[6])")

// prints "six times three is 18」

下標方法的使用

你能為乙個型別定義和實現多個下標方法,編譯器基於你傳送給下標方法的索引引數的型別來推斷和選擇適當的下標方法。

與方法類似,下標方法可以包含任意數量的輸入引數,且這些輸入引數的型別可以是任何型別,下標方法也能返回任何型別。下標方法也能使用可變引數,但不能使用in-out引數也不能通過預設引數值。

如可以定義乙個帶有多個輸入引數的表示多緯度的下標方法,下面的例子展示了如何為乙個矩陣結構定義乙個帶兩個整數型別的下標方法以及如何使用,定義的下標方法用來索引矩陣中定義的兩緯度的元素。

複製** **如下:

struct matrix

subscript(row:int,column:int) ->double

set

}}    

var matrix =matrixosiphgikho(rows:2,columns:2)

matrix[0,1] =1.5

matrix[1,0] =3.2

本文標題: 詳解swift程式設計中下標的用法

本文位址:

多維陣列中下標的含義

陣列名,代表陣列的第乙個元素存放的位址,對於int arr 10 來說,arr即指向arr 0 位址。定義乙個多維陣列 int matrix 3 4 陣列的元素是順序儲存的。把這個二維陣列理解為矩陣的話,matrix即3行4列的矩陣。矩陣的概念只是更好的理解二維陣列,資料在記憶體中的實際儲存方式是由...

Swift程式設計十三(下標)

類,結構和列舉可以定義下標,下標是用於訪問集合,列表或序列的成員元素的快捷方式。可以使用下標按索引設定和檢索值,而無需單獨的設定和檢索方法。例如,可以使用somearray index 在array例項中和使用somedictionary key 在dictionary例項訪問元素。可以為單個型別定...

翻譯 Swift程式語言 下標

類 結構體和列舉可以使用下標,用來方便訪問乙個集合 列表或序列的成員。可以使用下標根據索引設定和獲取值,而不需要單獨的方法。舉例來說,你可以使用somearray index 來訪問乙個陣列的例項中的元素,也可以使用somedictionary key 來訪問乙個字典中的元素。可以定義單一型別的多個...