在 Swift 中向数组添加元素
在本文中,您将学习如何在 Swift 中向数组添加元素。
在开始学习将元素插入数组之前,您需要了解数组的类型。
数组语法
// 声明一个不可变数组 let arrayName: [valuetype] = [数组元素 1, 数组元素 1, ...数组元素 n] // 声明一个可变数组 var arrayName: [valuetype] = [数组元素 1, 数组元素 1, ...数组元素 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)") numbers.append(25) print("之后的数字:\(numbers)")
输出
之前的数字:[10, 20, 4, 56, 2, 67, 78] 之后的数字:[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)") numbers.append(contentsOf: [40, 45, 50]) print("之后的数字: \(numbers)")
输出
之前的数字:[10, 20, 4, 56, 2, 67, 78] 之后的数字:[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]
这会将数字 15 插入到 numbers 数组中的索引 1 处,将现有元素移至正确。
示例 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 提供了两种不同的方法来修改数组。这两种方法适用于不同的情况。在将元素插入数组时,您必须注意索引绑定。