Swift - 数组


Swift 4 数组用于存储相同类型值的有序列表。Swift 4 进行了严格的检查,不允许您在数组中输入错误的类型,即使是错误的。

如果将创建的数组分配给变量,则它始终是可变的,这意味着您可以通过添加、删除或更改其项目来更改它;但如果将数组分配给常量,则该数组是不可变的,并且其大小和内容无法更改。

创建数组

您可以使用以下初始化语法创建某种类型的空数组 -

var someArray = [SomeType]()

以下是创建给定大小 a* 的数组并使用值对其进行初始化的语法 -

var someArray = [SomeType](count: NumbeOfElements, repeatedValue: InitialValue)

您可以使用以下语句创建一个具有 3 个元素且初始值为 0的Int类型的空数组 -

var someInts = [Int](count: 3, repeatedValue: 0)

以下是创建一个包含三个元素的数组并向该数组分配三个值的又一个示例 -

var someInts:[Int] = [10, 20, 30]

访问数组

您可以使用下标语法从数组中检索值,在数组名称后面的方括号内传递要检索的值的索引,如下所示 -

var someVar = someArray[index]

这里,索引从0开始,这意味着可以使用索引0来访问第一个元素,使用索引1可以访问第二个元素,依此类推。以下示例展示了如何创建、初始化和访问数组 -

var someInts = [Int](count: 3, repeatedValue: 10)

var someVar = someInts[0]
print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

当上面的代码被编译并执行时,它会产生以下结果 -

Value of first element is 10
Value of second element is 10
Value of third element is 10

修改数组

您可以使用append()方法或加法赋值运算符(+=)在数组末尾添加新项目。看一下下面的例子。在这里,最初,我们创建一个空数组,然后将新元素添加到同一数组中 -

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

当上面的代码被编译并执行时,它会产生以下结果 -

Value of first element is 20
Value of second element is 30
Value of third element is 40

您可以通过在给定索引处分配新值来修改数组的现有元素,如下例所示 -

var someInts = [Int]()

someInts.append(20)
someInts.append(30)
someInts += [40]

// Modify last element
someInts[2] = 50

var someVar = someInts[0]

print( "Value of first element is \(someVar)" )
print( "Value of second element is \(someInts[1])" )
print( "Value of third element is \(someInts[2])" )

当上面的代码被编译并执行时,它会产生以下结果 -

Value of first element is 20
Value of second element is 30
Value of third element is 50

迭代数组

您可以使用for-in循环迭代数组中的整个值集,如以下示例所示 -

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]
for item in someStrs {
   print(item)
}

当上面的代码被编译并执行时,它会产生以下结果 -

Apple
Amazon
Google

您可以使用enumerate()函数返回项目的索引及其值,如下例所示 -

var someStrs = [String]()

someStrs.append("Apple")
someStrs.append("Amazon")
someStrs += ["Google"]

for (index, item) in someStrs.enumerated() {
   print("Value at index = \(index) is \(item)")
}

当上面的代码被编译并执行时,它会产生以下结果 -

Value at index = 0 is Apple
Value at index = 1 is Amazon
Value at index = 2 is Google

添加两个数组

您可以使用加法运算符 (+) 将两个相同类型的数组相加,这将产生一个新数组,其中包含两个数组中的值的组合,如下所示 -

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB
for item in intsC {
   print(item)
}

当上面的代码被编译并执行时,它会产生以下结果 -

2
2
1
1
1

计数属性

您可以使用数组的只读计数属性来查找数组中的项目数,如下所示 -

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)

var intsC = intsA + intsB

print("Total items in intsA = \(intsA.count)")
print("Total items in intsB = \(intsB.count)")
print("Total items in intsC = \(intsC.count)")

当上面的代码被编译并执行时,它会产生以下结果 -

Total items in intsA = 2
Total items in intsB = 3
Total items in intsC = 5

空的财产

您可以使用数组的只读属性来确定数组是否为空,如下所示 -

var intsA = [Int](count:2, repeatedValue: 2)
var intsB = [Int](count:3, repeatedValue: 1)
var intsC = [Int]()

print("intsA.isEmpty = \(intsA.isEmpty)")
print("intsB.isEmpty = \(intsB.isEmpty)")
print("intsC.isEmpty = \(intsC.isEmpty)")

当上面的代码被编译并执行时,它会产生以下结果 -

intsA.isEmpty = false
intsB.isEmpty = false
intsC.isEmpty = true