在Swift中向数组添加一个元素

在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中向数组添加一个元素,你可以使用数组类型的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]

这将在数字数组的索引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提供了两种不同的方法来修改数组。这两种方法在不同的情况下使用。当你向数组中插入一个元素时,你必须照顾到索引的约束。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程