Swift数组
Swift 4数组用于存储相同类型的有序值列表。 Swift 4进行了严格的检查,不允许在数组中输入错误的类型。
如果将已创建的数组分配给变量,则它总是可变的,这意味着可以通过添加,删除或更改其项来更改它; 但是如果将数组赋值给常量,那么该数组是不可变的,并且其大小和内容不能更改。
创建数组
可以使用以下初始化语法创建某个类型的空数组 -
var someArray = [SomeType]()
以下是创建给定大小的数组并使用值初始化它的语法 -
var someArray = [SomeType](count:NumbeOfElements, repeatedValue:InitialValue)
可以使用以下语句创建一个具有3
个元素且初始值为零的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
count属性
使用数组的只读count
属性来查找下面显示的数组中的项目数 -
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
empty属性
使用数组的只读empty
属性来查明数组是否为空,如下所示 -
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
扫描二维码
程序员编程王