陣列的操作

陣列裡的元素就像用letvar宣告的常數和變數一樣,用let宣告的陣列,不只無法新增或刪除元素,裡面的元素的值也無法更改,用var宣告的陣列,不只可以新增或刪除元素,也可以隨時更改內部元素的值。

let a = [1,2,3] // 宣告一個整數常數陣列 Array<Int>
a[0] = 4    // 報錯
a.append(4) // 報錯

var b = [1,2,3] // 宣告一個整數變數陣列 Array<Int>
b[0] = 4    // 目前 b = [4,2,3]
b.append(5) // 目前 b = [4,2,3,5]

除了append()以外,還有三個常用的對陣列操作語法或屬性,分別是...

  • count是一個Int屬性,可以取得目前陣列中總共有幾個元素。
  • insert(_,at:)可以在指定位置新增元素,之後,所有在後方位置的元素會被往後推延。
  • remove(at:)可以在指定位置移除元素,之後,所有在後方位置的元素會往前遞補。

死背硬記永遠是最糟糕的學習方式,我們隨時可以打開模擬器來實驗一些程式碼,Swift語言的print()指令可以接受各種各樣的輸入內容,而不只是String字串或Int整數這些基礎型態,下面的程式碼中,你隨時可以呼叫print(a)來直接列印整個陣列的內容。

var a = [1,2,3]

// 在編號為1的位置新增一個數字
a.insert(0, at:1) // [1,0,2,3]

// 刪除編號為2的位置的數字
a.remove(at:2)    // [1,0,3]

// 取得目前陣列有幾個元素
let c = a.count   // c = 3

還記得for-in迴圈嗎?for a in 1...5這樣的程式碼意為「對於所有從1逐漸增加到5的整數,個別執行一次迴圈,並在此迴圈內將整數值賦給常數a」,陣列可以從這樣的語法,非常方便的做出類似的操作:

let 水果 = ["Apple", "Banana", "Orange", "Grape"]

for a in 水果 {
    print(a)
}

這段程式碼的意思是「對於所有在陣列水果中的元素,個別執行一次迴圈,並在此迴圈內將該元素的值賦給常數a」,由於水果是一個字串String的陣列,電腦將自動推斷aString,就好像let a = "Apple"一樣。

如果用我們比較熟悉的寫法,也就是for a in 1...n這樣的格式,程式碼則會稍有不同,效果則是一樣的。

let c = 水果.count

for a in 0...c-1 {
    print( 水果[a] )   //取得編號為a的水果
}

注意.count會取得陣列擁有的元素總數,但陣列的編號則是由0開始,因此對於一個有五個元素的陣列,1...5將會產生錯誤的結果,0...4才是正確的。

results matching ""

    No results matching ""