Welcome to Swift (苹果官方Swift文档初译与注解二十二)---148~153页(第三章--集合类型)

  在数组的指定索引位置插入一个元素,可以调用数组的insert(atIndex:)方法:

    shoppingList.insert("Maple Syrup", atIndex: 0)

    // shoppingList now contains 7 items

    // "Maple Syrup" is now the first item in the list”

  例子中的insert方法在数组的开始位置(索引为0)插入一个新的元素,元素的值是"Maple Syrup"

  同样的,你也可以使用removeAtIndex方法从数组中移除一个元素.这个方法会移除数组指定索引位置的元素,并且返回这个被移除的元素(尽管你可能不需要这个返回值):

    let mapleSyrup = shoppingList.removeAtIndex(0)

    // the item that was at index 0 has just been removed

    // shoppingList now contains 6 items, and no Maple Syrup

    // the mapleSyrup constant is now equal to the removed "Maple Syrup" string”

  当数组中的一个元素被移除后,后面的其他元素会占据移除之后的空白.因此,例子代码中数组中索引0的位置的值再一次的等于"Six eggs":

    irstItem = shoppingList[0]

    // firstItem is now equal to "Six eggs”

  如果你想移除数组最后面的元素,可以使用removeLast方法,而不必使用 removeAtIndex 方法,这样可以避免查询数组的conut属性.与 removeAtIndex 方法类似,removeLast方法同  样返回被删除的元素:

    let apples = shoppingList.removeLast()

    // the last item in the array has just been removed

    // shoppingList now contains 5 items, and no cheese

    // the apples constant is now equal to the removed "Apples" string”

Iterating Over an Array (遍历数组)

  可以使用for-in循环来变量整个数组:

    for item in shoppingList {

       println(item)

    }

    // Six eggs

    // Milk

    // Flour

    // Baking Powder

    // Bananas

  如果你需要知道每个索引和它对应的元素的值,可以使用全局函数 enumerate来遍历数组.全局函数 enumerate返回一个元组,在元组中包含着数组索引和索引对应的元素值.可以从  元组中把它们解析出来保存到临时常量或变量,再把常量或变量作为遍历的一部分使用:

    for (index, value) in enumerate(shoppingList) {

       println("Item \(index + 1): \(value)")

    }

    // Item 1: Six eggs

    // Item 2: Milk

    // Item 3: Flour

    // Item 4: Baking Powder

    // Item 5: Bananas

Creating and Initializing an Array (创建数组和初始化数组)

  使用初始化语法可以创建一个某种类型的空的数组(不用设置任何初始值):

    var someInts = Int[]()

    println("someInts is of type Int[] with \(someInts.count) items.")

    // prints "someInts is of type Int[] with 0 items.”

  注意变量someInts 的类型是 Int[],因为它使用了Int[]来初始化.

  如果内容的类型信息已经指定(比如一个函数的参数,或者已经定义类型的变量或者常量),可以使用空白的中括号[]来创建一个空数组:

    someInts.append(3)

    // someInts now contains 1 value of type Int

    someInts = []

    // someInts is now an empty array, but is still of type Int[]

  在Swift中,数组类型也提供了一个使用提供的默认值来创建固定大小数组的初始化方法.你需给初始化方法传递元素的个数(count)和它对应类型的默认值(repeatedValue):

    var threeDoubles = Double[](count: 3, repeatedValue: 0.0)

    // threeDoubles is of type Double[], and equals [0.0, 0.0, 0.0]

  由于Swift的类型判断机制,当使用初始化方法来创建数组的时候,可以不必指定数组要存储的类型,因为Swift可以通过默认值来确定数组存储值的类型:

    var anotherThreeDoubles = Array(count: 3, repeatedValue: 2.5)

    // anotherThreeDoubles is inferred as Double[], and equals [2.5, 2.5, 2.5]

  最后,你可以使用加法操作符来创建一个新的数组,新的数组的类型可以根据加法操作符的两个已经存在的数组判断出来:

    var sixDoubles = threeDoubles + anotherThreeDoubles

    // sixDoubles is inferred as Double[], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

Welcome to Swift (苹果官方Swift文档初译与注解二十二)---148~153页(第三章--集合类型)

时间: 2024-10-23 22:32:20

Welcome to Swift (苹果官方Swift文档初译与注解二十二)---148~153页(第三章--集合类型)的相关文章

Welcome to Swift (苹果官方Swift文档初译与注解三十五)---248~253页(第五章-- 函数 完)

Function Types as Return Types (函数类型作为返回值类型) 一个函数的类型可以作为另一个函数的返回值类型.可以在一个函数的返回值箭头后面写上一个完整的函数类型. 例如: 下面的例子定义了两个简单的函数,分别为stepForward 和 stepBackward.其中stepForward函数返回值比它的输入值多1,stepBackward函数返回值比它输入值少1.这两个函数的 类型都是(Int) -> Int: func stepForward(input: Int

Welcome to Swift (苹果官方Swift文档初译与注解二十七)---189~198页(第四章-- 流程控制)

Switch 一个switch语句里包含一个值,并且用这个值与其他几个可能的匹配模式进行比较,然后根据成功匹配上的模式,执行相应的代码块.switch语句提供了比if语句更多的选项来相应多种潜 在的情况. 最简单的一个例子: switch some value to consider { case value 1:   respond to value 1 case value 2, value 3:   respond to value 2 or 3 default:   otherwise,

Welcome to Swift (苹果官方Swift文档初译与注解二十一)---140~147页(第三章--集合类型)

第三章 Collection Types (集合类型) 在Swift中,提供了两种集合类型用来存储一组值:数组和字典.数组有序的存储相同类型的值;字典存储无序的相同类型的值.字典可以通过唯一的标识(就是所说的键)来查询和访问. 在Swift中,数组和字典总是要清晰的标明他们存储数据的类型.这就意味着不可以将错误的类型插入到数组或字典中.同时也意味着你是明确了解你要遍历的数组或字典里面数据的类 型.在Swift中,集合要显式的声明类型来保证在开发中都会明确的知道它能处理的数据类型. 注意点: 在S

Welcome to Swift (苹果官方Swift文档初译与注解十一)---70~76页(第二章)

Type Aliases (类型别名) 类型别名是个已经存在的类型定义另一个名字.定义类型别名的时候,使用关键字typealias. 当你想要使用名字来引用一个已经存在的类型时,类型别名将非常有效,并且更适合代码的上下文理解.例如,当要处理指定大小的一个数据时: typealias AudioSample = UInt16 一旦定义了一个类型别名,就可以在任何地方来代替原来的类型名: var maxAmplitudeFound = AudioSample.min // maxAmplitudeF

Welcome to Swift (苹果官方Swift文档初译与注解十)---63~69页(第二章)

如果你将整型与浮点型一起使用,结果将被认为是Double类型: et anotherPi = 3 + 0.14159 // anotherPi 的类型是Double 上述代码中,3的值是没有明确说明类型,因此,根据剩余部分的浮点类型可以确定返回值为Double. Numeric Literals (数值的进制表示) 整数类型可以进行如下表示: A decimal number, with no prefix         // 十进制数值,不需要前缀符号; A binary number, w

Welcome to Swift (苹果官方Swift文档初译与注解三)---11~18页

上述代码中,如果可选值为nil,那么判断条件则为false,而且在{}中的代码将会被忽略,如果可选值不为nil,会将该值逐步运算后赋值给let后面的常量,其中逐步运算过程将依据实际的代码块. Switch 语法支持任何类型数据以及各种比较操作,并不局限在整型. let vegetable = "red pepper" switch vegetable { case "celery": let vegetableComment = "Add some rai

Welcome to Swift (苹果官方Swift文档初译与注解三十七)---261~265页(第六章-- 闭包)

Inferring Type From Context 上下文类型判断 因为排序的闭包是作为一个参数传递给函数,因此Swift可以判定这个参数的类型和根据sort函数第二个参数判断返回值的类型.这个参数的类型是(String, String) -> Bool,这意味着 String,String以及Bool类型都不需要在闭包定义的时候声明.因为所有的类型都可以由系统判定.因此,返回箭头以及参数名字的括号都可以省略: reversed = sort(names, { s1, s2 in retur

Welcome to Swift (苹果官方Swift文档初译与注解二十八)---199~208页(第四章-- 流程控制)

Value Bindings (绑定值) 在switch的case中可以绑定一个或者多个值给case体中的临时常量或者变量,这个成为绑定值. 代码样例: let anotherPoint = (2, 0) switch anotherPoint { case (let x, 0):   println("on the x-axis with an x value of \(x)") case (0, let y):   println("on the y-axis with

Welcome to Swift (苹果官方Swift文档初译与注解二十九)---209~218页(第四章-- 流程控制)

Break break语句会立刻结束整个流程控制的执行.break语句可以在switch语句或者循环语句中帮助你提前结束循环或者switch的执行. Break in a Loop Statement  (循环语句中的break) 当在循环语句中使用break,会立刻结束循环的执行,并且跳转到循环体之后的第一行代码.循环不会再遍历执行了. Break in a Switch Statement (switch语句的break) 当在switch语句中使用break,break会立刻结速switc