swift 筆記 (十二) —— 下標

來源:互聯網
上載者:User

下標swift允許我們為 類,結構體,枚舉 定義下標,以更便捷的方式訪問一大堆屬性。比如Array和Dictionary都是結構體,swift的工程師已經為這兩個類型提供好了下標操作的代碼,所以,我們才可以通過 myArray[2]這種方式,讀取和改寫這個struct中儲存的資料。而且,一個類型中可以定義多種下標訪問方式(重載,關於重載,在後面的筆記中會提到,這裡先不用太在意)
下標可以定義為“讀寫”型的,也可以定義為”唯讀”型,這種行為,是通過定義一組操作完成的,這與之前筆記中提到過的用於計算的屬性的setter和getter是一樣的:
下標定義形式:
“讀寫”型:subscript(index: Int) -> Int {     get {
     }     set(newValue) {
     }}
“唯讀”型:subscript(index: Int) -> Int {     //前面的筆記中有提到,因為只有一個get方法,是可以省掉get{ 與 }的。}
官方的例子:

定義了一個叫 TimesTable的結構體,它有一個“唯讀”型下標的定義,通過下標文法,可以取得到multiplier那麼多倍的index值。。。因為那是 multiplier * index嘛。。。。所以,最後一個println的結果是18.(multiplier的值被初始化為3, 3*6 = 18)
下標可以使用任何類型做為輸入參數,也就是說,我們可以把class, struct, enum, Int, Double, String 等等,當做下標的參數使用,但是這個參數不能是in-out類型的,也不能有預設值。
前面的筆記中沒有提到過任何關於“多維陣列”的詞,也沒有相關的例子,因為我也不知道怎麼弄,囧。但是有了自訂下標的話,就不一樣了,事情就變得簡單了,一切由我們自己說了算,不管是二維,三維,四維,任何維度上儲存什麼類型等等,一切都由我們自己說了算, 拿二維數組來舉例(其實是官方的例子):

定義了一個矩陣類型 Matrix, 通過var grid: Double[] 的使用可以看到, 第7行,定義了一個一維的Array來儲存所有的資料。 第12行開始定義了下標的訪問行為, 可以get, 也可以set, 所以這個下標是個“讀寫”型的。根據下標的參數 row和 column可以計算出我們要訪問的元素的在Array中的位置,通過Array的下標可以直接讀取或者寫入我們的資料。
var myMatrix = Matrix(row: 2, columns: 2)myMatrix[0, 0] = 8
println(myMatrix[0, 0])   //得到8
至此,我們就可以開始快樂的使用二維數組了~~~多維的也一樣 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.