在 Swift 中向陣列新增元素


在本文中,您將學習如何在 Swift 中向陣列新增元素。

在開始學習將元素插入陣列之前,您需要了解陣列的型別。

陣列語法

// Declare an immutable array
let arrayName: [valuetype] = [array element 1, array element 1, ...array element n]
// Declare a mutable array
var arrayName: [valuetype] = [array element 1, array element 1, ...array element n]

在 Swift 中,我們可以使用 let 宣告不可變陣列,使用 var 宣告可變陣列。對於不可變陣列,我們必須在初始化時提供陣列元素。

如何將元素追加到陣列中?

現在,如果您想將元素追加到陣列中,我們必須使用 var 關鍵字將其設為可變。讓我們看看如何追加元素。

語法

要在 Swift 中向陣列新增元素,可以使用 Array 型別的 append 方法。此方法將一個新元素新增到陣列的末尾。

numbers.append(n)

基本上,您可以將要追加的元素傳遞到給定的陣列中。

演算法

  • 步驟 1 - 宣告一個可變陣列

  • 步驟 2 - 呼叫 append() 方法追加元素

  • 步驟 3 - 列印輸出

示例

例如,如果您有一個名為 numbers 的整數陣列,並且您想向其中新增數字 25,您可以這樣做 -

var numbers: [Int] = [10, 20, 4, 56, 2, 67, 78]
print("Numbers before: \(numbers)")
numbers.append(25)
print("Numbers after: \(numbers)")

輸出

Numbers before: [10, 20, 4, 56, 2, 67, 78]
Numbers after: [10, 20, 4, 56, 2, 67, 78, 25]

如何一次新增多個元素?

語法

是的,您可以一次新增多個元素,如下所示 -

numbers.append(contentsOf: [Array Elements])

基本上,您可以將一個數組傳遞給另一個已設為可變的陣列,以將所有元素追加到其中。

演算法

  • 步驟 1 - 宣告一個可變陣列

  • 步驟 2 - 呼叫 number.append() 函式追加多個元素

  • 步驟 3 - 列印輸出

示例

var numbers: [Int] = [10, 20, 4, 56, 2, 67, 78]
print("Numbers before: \(numbers)")
numbers.append(contentsOf: [40, 45, 50])
print("Numbers after: \(numbers)")

輸出

Numbers before: [10, 20, 4, 56, 2, 67, 78]
Numbers after: [10, 20, 4, 56, 2, 67, 78, 40, 45, 50]

您可以使用 += 運算子追加元素,如下所示 -

numbers += [40, 45, 50]

請記住,append() 方法會將元素新增到陣列的末尾。

如何在陣列的特定索引處插入元素?

語法

numbers.insert(<Element>, at: <Index>)

在 insert() 方法中,您必須傳遞一個元素以及要在其中插入該元素的索引。

演算法

  • 步驟 1 - 宣告一個可變陣列

  • 步驟 2 - 使用元素和索引呼叫 insert() 方法

  • 步驟 3 - 列印輸出

示例 1

如果您想在陣列的特定索引處插入元素,可以使用 insert(_:at:) 方法。例如 -

var numbers: [Int] = [10, 20, 4, 56, 2, 67, 78]
print("Numbers before: \(numbers)")
numbers.insert(15, at: 1)
print("Numbers after: \(numbers)")

輸出

Numbers before: [10, 20, 4, 56, 2, 67, 78]
Numbers after: [10, 15, 20, 4, 56, 2, 67, 78]

這將在 numbers 陣列的索引 1 處插入數字 15,並將現有元素向右移動。

示例 2

請注意,您不能在超出陣列範圍的索引處向陣列中插入元素。程式碼將出現如下異常 -

var numbers: [Int] = [10, 20, 4, 56, 2, 67, 78]
numbers.insert(15, at: 10)

輸出

Fatal error: Array index is out of range
Current stack trace:
0    libswiftCore.so                    0x00007f27c596a2e0 swift_reportError + 50
1    libswiftCore.so                    0x00007f27c59def40 _swift_stdlib_reportFatalErrorInFile + 112
2    libswiftCore.so                    0x00007f27c56c9026  + 1425446
3    libswiftCore.so                    0x00007f27c56c8c4f  + 1424463
4    libswiftCore.so                    0x00007f27c56c89ec  + 1423852
5    libswiftCore.so                    0x00007f27c56c8500 _assertionFailure(_:_:file:line:flags:) + 441
6    libswiftCore.so                    0x00007f27c56b4461  + 1340513
8    swift-frontend                     0x000000000058765a  + 1603162
9    swift-frontend                     0x000000000054c778  + 1361784
10   swift-frontend                     0x000000000051c4ca  + 1164490
11   swift-frontend                     0x000000000051bb7c  + 1162108
12   swift-frontend                     0x0000000000510710  + 1115920
13   swift-frontend                     0x000000000049be53  + 638547
14   libc.so.6                          0x00007f27c721ab10 __libc_start_main + 231
15   swift-frontend                     0x000000000049b96a  + 637290
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.	Program arguments: /usr/bin/swift-frontend -frontend -interpret main.swift -disable-objc-interop -module-name main 
1.	Swift version 5.4.2 (swift-5.4.2-RELEASE)
2.	While running user code "main.swift"
/usr/bin/swift-frontend[0x5806484]
/usr/bin/swift-frontend[0x5803f1e]
/usr/bin/swift-frontend[0x580666c]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12980)[0x7f27c8995980]
/usr/lib/swift/linux/libswiftCore.so(+0x15c02a)[0x7f27c56c902a]
/usr/lib/swift/linux/libswiftCore.so(+0x15bc4f)[0x7f27c56c8c4f]
/usr/lib/swift/linux/libswiftCore.so(+0x15b9ec)[0x7f27c56c89ec]
/usr/lib/swift/linux/libswiftCore.so($ss17_assertionFailure__4file4line5flagss5NeverOs12StaticStringV_A2HSus6UInt32VtF+0x1b9)[0x7f27c56c86b9]
/usr/lib/swift/linux/libswiftCore.so(+0x147461)[0x7f27c56b4461]
[0x7f27c8d3a0fc]
/usr/bin/swift-frontend[0x58765a]
/usr/bin/swift-frontend[0x54c778]
/usr/bin/swift-frontend[0x51c4ca]
/usr/bin/swift-frontend[0x51bb7c]
/usr/bin/swift-frontend[0x510710]
/usr/bin/swift-frontend[0x49be53]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7f27c721abf7]
/usr/bin/swift-frontend[0x49b96a]
/usr/bin/timeout: the monitored command dumped core
Illegal instruction

此錯誤清楚地表明,由於超出範圍,因此無法在給定索引處插入元素。

結論

Swift 提供了兩種不同的方法來修改陣列。這兩種方法用於不同的情況。在將元素插入陣列時,您必須注意索引範圍。

更新於: 2023年1月3日

6K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告