Swift - 数组

  • 简述

    Swift 4 数组用于存储相同类型值的有序列表。Swift 4 进行了严格的检查,不允许您在数组中输入错误的类型,即使是错误的。
    如果将创建的数组分配给变量,则它始终是可变的,这意味着您可以通过添加、删除或更改其项来更改它;但是如果你将一个数组分配给一个常量,那么这个数组是不可变的,它的大小和内容不能改变。
  • 创建数组

    您可以使用以下初始化语法创建某种类型的空数组 -
    
    var someArray = [SomeType]()
    
    这是创建给定大小 a* 的数组并用一个值初始化它的语法 -
    
    var someArray = [SomeType](count: NumbeOfElements, repeatedValue: InitialValue)
    
    您可以使用以下语句创建一个空数组 Int 具有 3 个元素且初始值为零的类型 -
    
    var someInts = [Int](count: 3, repeatedValue: 0)
    
    以下是创建一个包含三个元素的数组并为该数组分配三个值的另一个示例 -
    
    var someInts:[Int] = [10, 20, 30]
    
  • 访问数组

    您可以使用以下方法从数组中检索值 subscript 语法,在数组名称之后立即在方括号内传递要检索的值的索引,如下所示 -
    
    var someVar = someArray[index]
    
    在这里, 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
    
    您可以通过在给定索引处分配新值来修改 Array 的现有元素,如下例所示 -
    
    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