Swift 數(shù)組(Array)

在本教程中,您將學習數(shù)組,創(chuàng)建數(shù)組,訪問數(shù)組的值以及數(shù)組中的一些常見操作。

在上一篇Swift 數(shù)據(jù)類型文章中,我們學習了如何創(chuàng)建可以保存單個值的某些數(shù)據(jù)類型變量/常量。

但是,如果我們要存儲相同數(shù)據(jù)類型的多個值怎么辦。我們在Swift中使用稱為 數(shù)組 的東西。

什么是數(shù)組?

數(shù)組只是一個容器,可以在一個有序列表中保存一個數(shù)據(jù)類型的多個數(shù)據(jù)(值),即,您以與定義數(shù)組中各項相同的順序來獲取元素。

數(shù)組可以存儲任何類型的數(shù)據(jù)例如 Int,String,Class 等值。

如何在Swift中聲明數(shù)組?

您可以通過在方括號內(nèi) [] 指定數(shù)據(jù)類型來創(chuàng)建一個空數(shù)組。

請記住,您必須在方括號內(nèi)包括類型,否則Swift會將其視為普通數(shù)據(jù)類型,并且您只能在其中存儲一個值。

示例1:聲明一個空數(shù)組

let emptyIntArr:[Int] = []
print(emptyIntArr)

運行該程序時,輸出為:

[ ]

在上面的程序中,我們聲明了一個常量 emptyIntArr,該常量可以存儲整數(shù)數(shù)組并使用0值初始化。

或者

您還可以如下定義一個空數(shù)組:

let emptyIntArr:Array<Int> = Array()
print(emptyIntArr)

或者

由于swift是一種類型推斷語言,因此您也可以不指定數(shù)據(jù)類型而直接創(chuàng)建數(shù)組,但必須使用一些值進行初始化,以便編譯器可以將其類型推斷為:

示例2:聲明具有某些值的數(shù)組

let someIntArr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(someIntArr)

運行該程序時,輸出為:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

在上面的程序中,我們聲明了一個常量 someIntArr,可以存儲 Integer 數(shù)組,而無需顯式指定類型。另外,我們用值 1、2、3、4、5、6、7、8、9 初始化了數(shù)組。

示例3:聲明一個包含指定數(shù)量的單個重復值的數(shù)組

您還可以將值重復指定的次數(shù),以在Swift中組成數(shù)組。這是通過將數(shù)組初始化器與 repeating和count 一起使用來完成的。

let arrWithRepeatingValues = Array(repeating: "Hello, World", count: 4)
print(arrWithRepeatingValues)

運行該程序時,輸出為:

["Hello, World", "Hello, World", "Hello, World", "Hello, World"]

在以上程序中,我們定義了一個常量 arrWithRepeatingValues,該常量存儲字符串 Hello,World 的數(shù)組并重復相同的值4次,如示例中所指定count。

注意:在Swift中,不能像在其他編程語言中那樣創(chuàng)建定長大小的數(shù)組。固定長度大小的數(shù)組意味著,數(shù)組不能包含比您在初始化期間定義的元素更多的元素。

值如何存儲在數(shù)組中?

假設您有一個可以存儲字符串數(shù)組的常量,如下所示:

let intArr = [21, 34, 54, 12]

值如何存儲在數(shù)組中的圖形表示如下所示:

值如何存儲在數(shù)組中?

您創(chuàng)建的所有數(shù)組都從索引0開始。第一個元素存儲在索引0中,第二個元素存儲在下一個索引(1)中,依此類推。

如何在Swift中訪問數(shù)組元素?

您可以使用標語法來訪問數(shù)組的元素,即您需要在數(shù)組名稱后的方括號內(nèi)包括要訪問的值的索引。

假設您如上所述聲明了一個數(shù)組 intArr 。那么第一個元素是intArr[0],第二個元素是intArr[1],依此類推。

如何在Swift中訪問數(shù)組元素?

示例4:訪問數(shù)組的元素

let intArr = [21, 34, 54, 12]
print(intArr[0])
print(intArr[1])
print(intArr[2])
print(intArr[3])

運行該程序時,輸出為:

21
34
54
12

您還可以使用for-in循環(huán)訪問數(shù)組的元素。有關(guān)更多信息,請參考Swift for-in循環(huán)

如何在Swift中修改/添加數(shù)組元素?

你可以使用下標語法和賦值操作符來修改數(shù)組的元素,也就是說,你需要在數(shù)組名稱后面的方括號中包含你想要更新的值的索引,然后是賦值操作符和新值。

示例5:修改數(shù)組的元素

var intArr = [21, 34, 54, 12]
intArr[0] = 12
intArr[1] = 42
intArr[2] = 45
intArr[3] = 21
print(intArr)

運行該程序時,輸出為:

[12, 42, 45, 21]

您還可以使用以下新值修改數(shù)組的所有元素,如下所示:

示例6:整體修改數(shù)組

var intArr = [21, 34, 54, 12]
intArr = [1,2,3]
print(intArr)

運行該程序時,輸出為:

[1, 2, 3]

但是,要將新元素添加到現(xiàn)有數(shù)組,則不能使用下標語法。如果這樣做,最終將導致錯誤。您不能執(zhí)行以下操作:

示例7:使用下標語法在數(shù)組中添加新元素(無效)

var intArr = [21, 34, 54, 12]
intArr[4] = 10

運行該程序時,輸出為:

fatal error: Index out of range

在將新元素分配給數(shù)組 intArr 時,上述程序給出了錯誤。這是因為 intArr 尚未為索引4分配額外的內(nèi)存,并且無法存儲給定的值。

為了正確地將新元素插入數(shù)組,我們使用array的append()方法。后面會介紹append()使用方法。

數(shù)組內(nèi)置的函數(shù)和屬性

1. isEmpty 屬性

此屬性確定數(shù)組是否為空。如果一個數(shù)組中不包含任何值,則它返回true,否則返回false。

示例8:isEmpty如何工作?

let intArr = [21, 34, 54, 12]
print(intArr.isEmpty)

運行該程序時,輸出為:

false

2.first 屬性

此屬性用于訪問數(shù)組的第一個元素。

示例9:first 如何工作?

let intArr = [21, 34, 54, 12]
print(intArr.first)

運行該程序時,輸出為:

Optional(21)

同樣,您可以使用 last 屬性訪問數(shù)組的最后一個元素。

3.append 函數(shù)(追加)

append函數(shù)用于在數(shù)組末尾插入/附加元素。

示例10:append如何工作?

var intArr = [21, 34, 54, 12]
intArr.append(32)
print(intArr)

運行該程序時,輸出為:

[21, 34, 54, 12, 32]

您還可以將一個數(shù)組的內(nèi)容附加到另一個數(shù)組,如下所示:

var firstArr = [1,2,3,4]
var secondArr = [5,6,7,8]
firstArr.append(contentsOf: secondArr)
print(firstArr)

運行該程序時,輸出為:

[1, 2, 3, 4, 5, 6, 7, 8]

4.insert 函數(shù)(插入)

此函數(shù)用于在數(shù)組的特定索引處插入/附加元素。

示例11:insert 如何工作?

var intArr = [21,34,54,12]
intArr.insert(22, at: 1)
print(intArr)

運行該程序時,輸出為:

[21, 22, 34, 54, 12]

同樣,您也可以使用removeproperty刪除指定索引處的元素。

5.remove() 函數(shù)(移除)

此函數(shù)從數(shù)組中刪除并返回在指定位置指定的值。

示例12:remove如何工作?

var strArr = ["ab","bc","cd","de"]
let removedVal = strArr.remove(at: 1)
print("removed value is \(removedVal)")
print(strArr)

運行該程序時,輸出為:

removed value is bc
["ab", "cd", "de"]

同樣,您也可以使用removeFirst刪除數(shù)組的第一個元素,removeLast刪除數(shù)組的最后一個元素以及removeAll清空數(shù)組的功能。

6.reversed() 函數(shù)(反轉(zhuǎn))

此函數(shù)以相反的順序返回數(shù)組的元素。

示例13:reversed()如何工作?

var intArr = [21,22,23,24]
let reversedArr = Array(intArr.reversed())
print(reversedArr)

運行該程序時,輸出為:

[24, 23, 22, 21]

7.count 屬性(計數(shù))

此屬性返回數(shù)組中元素的總數(shù)。

示例14:count 計數(shù)

let floatArr = [10.2,21.3,32.0,41.3]
print(floatArr.count)

運行該程序時,輸出為:

4

注意事項

在Swift中使用下標語法訪問數(shù)組元素時,必須確保該值位于索引中,否則將導致運行時崩潰。讓我們在示例中看一下:

let intArr = [21, 34, 54, 12]
print(intArr[-1])

運行該程序時,輸出為:

fatal error: Index out of range

在上面的程序中,索引 -1 中沒有值。因此,當您嘗試訪問索引中的值時,將發(fā)生運行時崩潰。

為防止這種情況,請首先找到要刪除的元素的索引。然后刪除索引處的元素,如下所示:

var intArr = [21, 34, 54, 12]
if let index = intArr.index(of: 34) {
    print("found index")
    let val =  intArr.remove(at: index)
    print(val)
}

運行該程序時,輸出為:

found index
34
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清