在 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+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告