Swift数组
在本教程中,我们将讨论Swift数组。
如果您不知道Swift中的Optional如何工作,可以先参考其中然后再继续。
Swift数组
Swift中的数组用于存储任何类型的值的有序集合(数组中可以有多个类型)。
定义为" var"的数组是可变的,而使用" let"定义的数组是不可变的。
下面是每个示例的示例:
var arrayOfStrings:[String] = ["Hello", "Playground"] let constantArray :[String] = ["Hello", "Playground"] //Can't modify this
让我们深入游乐场,深入了解Arrays。
Swift 数组示例
我们来看一下swift数组的不同操作。
在Swift中创建数组
您可以声明类型,也可以通过Swift进行推断,如下所示。
//String array with type explicitly declared. var arrayOfStrings:[String] = ["Hello", "Playground"] //String array with type inferred. var arrayOfStrings = ["Hello", "Playground"]
快速数组长度
为了获得数组的长度,我们将使用点运算符在数组实例上调用函数count,如下所示。
print(arrayOfStrings.count) //prints 2
向数组添加元素
我们可以在数组的末尾添加元素,在数组实例上调用函数append,如下所示。
arrayOfStrings.append("New Member") arrayOfStrings.append(1)//Compilation error print(arrayOfStrings.count) //prints 3 let mutableArray = ["I can't", "be", "modified"] mutableArray.append("1") //Compile-time error.
由于数组的类型为"字符串",因此添加"整数"时会出现错误。
当在不可变数组上使用append
函数时,会产生编译时错误。
一次附加多个元素
arrayOfStrings += ["Append", "Multiple", "Elements"] arrayOfStrings += [1,2] //Compilation error. Can't add elements of a different type
创建一个空数组
要创建特定类型的空数组,请使用以下语法:
var someArray:[Int] = [] //or var someArray = [Int]() //Example 1 var intArray = [Int]() intArray.append(3) intArray.count //prints 1 intArray = [] //clears the contents. Back to being empty.
创建具有默认值的数组
以下语法用于创建具有重复值和计数的数组。
var intArray: [Int] = Array(repeating: 10, count: 5) print(intArray) //prints [10, 10, 10, 10, 10] var boolArray: [Bool] = Array(repeating: false, count: 5) //[false, false, false, false, false]
" Array()"是默认函数,包含两个参数"重复",其中我们为每个元素设置默认值,而" count"则用于设置元素数量。
访问和修改数组
使用下标访问和修改数组元素或者多或者少类似于其他语言。
var customIntArray = [1,4,5,7,10,2,4,5,34,33,11,13,17] customIntArray[0] = 2 customIntArray[customIntArray.count-1] = 11
访问和修改一系列元素
要访问数组中的一系列元素,我们使用下标语法,如下所示
var customIntArray = [1,4,5,7,10,2,4,5,34,33,11,13,17] customIntArray[0...5] //returns [1, 4, 5, 7, 10, 2]
注意:返回的元素范围包括开始和结束索引(在上述情况下为0和5)。
我们也可以如下所示修改元素范围的值
var customIntArray = [1,4,5,7,10,2,4,5,34,33,11,13,17] customIntArray[0...5] = [0,0,0,0,0] print(customIntArray) //prints [0, 0, 0, 0, 0, 4, 5, 34, 33, 11, 13, 17]
可以使用一组长度不同的值来修改值的范围,如下所示:
var customIntArray = [1,4,5,7,10,2,4,5,34,33,11,13,17] customIntArray[0...5] = [0] print(customIntArray) //prints [0, 4, 5, 34, 33, 11, 13, 17]
在上面的代码中,我们用一个元素替换了5个元素。
在指定索引处插入和删除
要在指定索引处插入元素,我们使用以下语法:
var customIntArray = [1,4,5,7,10,2,4,5,34,33,11,13,17] customIntArray.insert(0, at: 0) print(customIntArray) //prints [0, 1, 4, 5, 7, 10, 2, 4, 5, 34, 33, 11, 13, 17]
"插入"功能将值插入上述索引,并将数组元素向右移偏移量1。
要删除指定索引处的元素,我们使用以下语法:
var customIntArray = [1,4,5,7,10,2,4,5,34,33,11,13,17] customIntArray.remove(at: 0) //returns 1 print(customIntArray)//prints [4, 5, 7, 10, 2, 4, 5, 34, 33, 11, 13, 17]
注意:remove函数也返回被删除的元素。
如果需要,可以将其存储如下
var removedElement = customIntArray.remove(at: 0)
要从数组中删除所有元素,我们需要在数组上调用方法removeAll()
。
要检查数组是否为空,我们在数组实例上调用方法isEmpty()
,如下所示:
var customIntArray = [1,4,5,7,10,2,4,5,34,33,11,13,17] if customIntArray.isEmpty { print("array is empty") } else{ print("false") //this gets printed }
访问数组的第一个和最后一个元素
Swift为我们提供了first和last属性来访问数组的first和last元素。
返回值是一个"可选"类型,如下所示:
var customIntArray = [1,4,5,7,10,2,4,5,34,33,11,13,17] var first = customIntArray.first print(first) //prints Optional(1) var last = customIntArray.last print(last) //prints Optional(17) if let l = last{ print(l) //prints 17 } else{print("couldn't retrieve the last element") }
我们使用了" if let"来安全地获取最后一个元素的值。
要检索并删除数组的最后一个元素,我们调用函数" popLast()",该函数会从数组中弹出最后一个元素并返回其可选值。
if let l = customIntArray.popLast(){ print(l) //prints 17 } else{print("couldn't retrieve the last element") }
注意:在上面的示例中,如果数组为空,则将打印else语句。
在Swift数组中查找元素
为了检查数组中是否存在元素,我们在数组实例上调用函数" contains()",如下所示:
var oddArray = [1,3,5,7] print(oddArray.contains(2)) //false print(oddArray.contains(5)) //true
注意:一旦找到第一个匹配项,contains()函数就会返回。
函数contains()具有另一种实现,期望以函数/闭包形式的条件作为参数。
下面提到一个例子。
var oddArray = [1,3,5,7] print(oddArray.contains(where: {var oddArray = [1,3,5,7] oddArray.reverse() print(oddArray) //prints [7, 5, 3, 1]> 5})) //prints true print(oddArray.contains(where: {var oddArray = [1,3,5,7] for element in oddArray { print(element) }> 10})) //prints false //check if the array contains any even number print(oddArray.contains(where: {var stringArray = ["Hey", "How", "You","Doing"] for (index, value) in stringArray.enumerated() { print("\(index) : \(value)") //prints index value pair } //prints : 0 : Hey 1 : How 2 : You 3 : Doing%2 == 0})) //prints false
在上述代码段中,我们使用了闭包作为where子句。
在swift中反转数组
为了反转数组,我们在数组实例上调用函数reverse()
,如下所示:
var oddArray = [1,3,5,7] for number in oddArray.reversed() { print(number) } //prints: 7 5 3 1
遍历数组
" for-in"循环使我们无需使用索引即可循环遍历数组,如下所示:
let oddArray = [1,3,5,7] let evenArray = [0,2,4,6,8] let completeArray = evenArray + oddArray //contains [0, 2, 4, 6, 8, 1, 3, 5, 7]
为了显示索引值和元素,我们在" for-in"循环中对数组调用" enumerated()"函数,如下所示:
let oddArray = [1,3,5,7] let oddArrayTwo = [1,3,5,7] let evenArray = [0,2,4,6,8] evenArray.elementsEqual(oddArray) //false oddArray.elementsEqual(oddArrayTwo) //true
为了在" for-in"循环内以相反的顺序遍历数组,我们在数组上调用函数" reversed()"。
var arrayOfArrays = [[String]]() var aA = ["AA","AB","AC"] var bA = ["BA","BB","BC"] var cA = ["CA","CB","CC"] arrayOfArrays.append(aA) arrayOfArrays.append(bA) arrayOfArrays.append(cA) print(arrayOfArrays)//prints: [["AA", "AB", "AC"], ["BA", "BB", "BC"], ["CA", "CB", "CC"]] arrayOfArrays[0].append("AD") arrayOfArrays[1].append("BD") arrayOfArrays[2].append("CD") print(arrayOfArrays)//prints: [["AA", "AB", "AC", "AD"], ["BA", "BB", "BC", "BD"], ["CA", "CB", "CC", "CD"]]
合并和比较两个数组
要合并两个数组,您可以简单地将它们添加如下所示:
##代码##为了比较两个数组是否相等,我们使用elementsEqual()
函数,如下所示:
快速多维数组
多维数组以以下方式声明。
##代码##