Swift - 数组



数组用于存储相同类型值的排序列表。Swift 进行严格检查,即使是错误,也不允许您在数组中输入错误的类型。如果您将创建的数组赋值给变量,则它始终是可变的,这意味着您可以通过添加、删除或更改其元素来更改它;但如果您将数组赋值给常量,则该数组是不可变的,其大小和内容都不能更改。如果您尝试更改它,编译器将抛出错误。

数组可以在不同的位置存储重复的值。数组中的每个元素都有一个从 0 开始的索引值,以便我们可以使用该索引访问和修改它们。

Arrays

在 Swift 中创建数组

我们可以通过显式指定数组的类型来创建数组。

语法

以下是创建数组的语法:

var someArray : [Type] = []

我们也可以在不指定其类型的情况下创建数组。在这种情况下,编译器将根据赋值的值自动获取数组的类型。

var someArray = [value1, value2, value3]

如果您需要创建一个只有一个值(通过重复它)的数组,您可以使用 Array() 初始化器。

var someInts = Array(repeating: "Swift", count: 4)

示例

在下面的示例中,我们使用上面讨论的所有语法创建了 3 个不同的数组:

import Foundation

// Defining an array by specifying the type
var arr1:[Int] = [11, 44, 55, 77, 88, 22]
print("Contents of arr1 :", arr1)

// Defining an array without specifying the type
var arr2 = [101, 404, 550, 770, 880, 222]
print("Contents of arr2 :", arr2)

// Defining an array with a single value 
var arr3 = Array(repeating: "Tutorialspoint", count: 3)
print("Contents of arr3 :", arr3)

输出

上述程序产生以下结果:

Contents of arr1 : [11, 44, 55, 77, 88, 22]
Contents of arr2 : [101, 404, 550, 770, 880, 222]
Contents of arr3 : ["Tutorialspoint", "Tutorialspoint", "Tutorialspoint"]

在 Swift 中修改和访问数组

在数组中,每个元素都有其自身的索引值,从 0 开始。因此,要从数组中检索值,请在数组名称之后立即在方括号中传递要检索的值的索引,使用下标语法。

语法

以下是访问和修改数组的语法:

arrayName[indexValue]

这里,索引从 0 开始,这意味着第一个元素可以使用索引 0 访问,第二个元素可以使用索引 1 访问,依此类推。

示例

import Foundation

// Defining and initializing an array
var someArr:[Int] = [11, 44, 55, 77, 88, 22]

// Accessing the element present at index 3
// Using subscript syntax
print("Array element:", someArr[3])

输出

编译并执行上述代码后,将产生以下结果:

Array element: 77

使用下标语法,我们还可以通过为现有索引赋值新值来修改数组的元素。

示例

import Foundation

// Defining and initializing an array
var someArr:[Int] = [11, 44, 55, 77, 88, 22]

// Modifying the array element present at index 3
// Using subscript syntax
someArr[3] = 33
print("Modified Array element:", someArr[3])

输出

编译并执行上述代码后,将产生以下结果:

Modified Array element: 33

在 Swift 中向数组添加新元素

我们可以使用以下方法向现有数组添加新元素。

使用 append() 方法

它在指定数组的末尾添加一个新元素。

示例

import Foundation

// Defining and initializing an array
var someArr:[Int] = [43, 32, 11]

// Appending new element using append() method
someArr.append(34)
someArr.append(60)

print("Updated Array", someArr)
输出

编译并执行上述代码后,将产生以下结果:

Updated Array [43, 32, 11, 34, 60]

使用加法赋值运算符(+=)

我们还可以使用加法赋值运算符在数组末尾添加新项。

示例

import Foundation

// Defining and initializing an array
var someArr:[Int] = [43, 32, 11]

// Adding new element using += operator 
someArr += [30]
someArr += [90]

print("Updated Array", someArr)
输出

编译并执行上述代码后,将产生以下结果:

Updated Array [43, 32, 11, 30, 90]

在 Swift 中迭代数组

迭代数组是编程中最基本和最常用的操作。它允许开发人员访问和处理指定数组的各个元素。在 Swift 中,我们可以使用以下方法迭代数组:

使用 for-in 循环

我们可以使用 for-in 循环迭代数组中的整套值。这是访问和顺序处理给定数组的每个元素的最简单、最简洁的方法。

示例

import Foundation

// Defining and initializing an array
var someArr:[Int] = [3, 56, 12, 4, 23, 5, 6, 7, 8]

print("Array Elements:")
// Iterating over the array using a for-in loop
for x in someArr{
   print(x)
}
输出

编译并执行上述代码后,将产生以下结果:

Array Elements:
3
56
12
4
23
5
6
7
8

将 enumerated() 函数与 for-in 循环一起使用

我们还可以将 enumerated() 函数与 for-in 循环一起使用,它将返回项目的索引及其值。

示例

import Foundation

// Defining and initializing an array
var someArr:[Int] = [3, 56, 23, 34, 5, 78, 9]

print("Array Elements with their index value:")

// Iterating over the array using for-in loop along with enumerated() function
for (index, element) in someArr.enumerated() {
   print("Value at index = \(index) is \(element)")
}
输出

编译并执行上述代码后,将产生以下结果:

Array Elements with their index value:
Value at index = 0 is 3
Value at index = 1 is 56
Value at index = 2 is 23
Value at index = 3 is 34
Value at index = 4 is 5
Value at index = 5 is 78
Value at index = 6 is 9

使用 while 循环

我们还可以使用 while 循环迭代给定数组的元素。它提供对迭代的显式控制。在需要对迭代进行细粒度控制的地方,它非常有用。

示例

import Foundation

// Defining and initializing an array
var someArr:[Int] = [3, 56, 23, 34, 5, 78, 9]

print("Array Elements:")

var indexVal = 0

// Iterating over the array using while loop
while indexVal < someArr.count {
   print(someArr[indexVal])
   indexVal += 1
}
输出

编译并执行上述代码后,将产生以下结果:

Array Elements:
3
56
23
34
5
78
9

使用 forEach() 函数

Swift 提供一个名为 forEach() 的预定义函数来迭代给定数组。它用于对给定数组的各个元素执行简单的操作,而无需显式迭代。

示例

import Foundation

// Defining and initializing an array
var someArr:[String] = ["Mona", "Pihu", "Mayank", "Sumit"]

print("Array Elements:")

// Iterating over the array using forEach() function
someArr.forEach { names in
   print(names)
}
输出

编译并执行上述代码后,将产生以下结果:

Array Elements:
Mona
Pihu
Mayank
Sumit

在 Swift 中添加两个数组

我们可以使用加法运算符 (+) 来添加相同类型的两个数组,这将产生一个包含来自这两个数组的值的新数组。

语法

以下是添加两个数组的语法:

var result = Array1 + Array2

示例

import Foundation

// Defining and initializing an array
var someArr1:[Int] = [11, 44, 55, 77, 88, 22]
var someArr2:[Int] = [10, 40, 50, 70, 80, 20]

// Adding two arrays of the same type
// Using + operator
var resultantArray = someArr1 + someArr2

print("Concatenated Array: ", resultantArray)

输出

编译并执行上述代码后,将产生以下结果:

Concatenated Array:  [11, 44, 55, 77, 88, 22, 10, 40, 50, 70, 80, 20]

Swift 中的 count 属性

count 属性用于计算指定数组中存在的元素总数。

语法

以下是 count 属性的语法:

Array.count

示例

import Foundation

// Defining and initializing arrays 
var someArr1:[Int] = [3, 56, 12, 4, 23, 5, 6, 7, 8]
var someArr2:[String] = ["Blue", "Black", "Green", "Yellow"]
var someArr3:[Int] = []

// Counting the total number of elements present
// in the given array
// Using count property
print("Total number of elements present in someArr1 = \(someArr1.count)")
print("Total number of elements present in someArr2 = \(someArr2.count)")
print("Total number of elements present in someArr3 = \(someArr3.count)")

输出

编译并执行上述代码后,将产生以下结果:

Total number of elements present in someArr1 = 9
Total number of elements present in someArr2 = 4
Total number of elements present in someArr3 = 0

Swift 中的 empty 属性

empty 属性用于检查给定数组是否为空。如果给定数组为空,则此属性将返回 true。如果给定数组包含某些元素,则此属性将返回 false。

语法

以下是 empty 属性的语法:

array.isEmpty 

示例

import Foundation

// Defining and initializing arrays 
var someArr1:[Int] = [2, 5, 66, 44, 32, 2, 12]
var someArr2:[String] = ["Blue, Black"]
var someArr3:[Int] = []

// Checking if the given arrays are empty or not
// Using isEmpty property
print("Is someArr1 is empty? = \(someArr1.isEmpty)")
print("Is someArr2 is empty? = \(someArr2.isEmpty)")
print("Is someArr3 is empty? = \(someArr3.isEmpty)")

输出

编译并执行上述代码后,将产生以下结果:

Is someArr1 is empty? = false
Is someArr2 is empty? = false
Is someArr3 is empty? = true
广告