// 数组 // shoppingList变量被声明为“字符串值类型的数组“,记作[String]。 因为这个数组被规定只有String一种数据结构,所以只有String类型可以在其中被存取。 在这里,shoppinglist数组由两个String值("Eggs" 和"Milk")构造,并且由字面量定义 var shopingList:[String] = ["Eggs","Milk"]; //由于 Swift 的类型推断机制,当我们用字面量构造只拥有相同类型值数组的时候,我们不必把数组的类型定义清楚。 shoppinglist的构造也可以这样写 var shopingList2 = ["Eggs","Milk"]; // 访问和修改数组 // 使用数组的只读属性count来获取数组中的数据项数量 println("一共存在 \(shopingList.count) 个商品") // 检查是否为空 if shopingList2.isEmpty { println("数组为空") }else{ println("数组不为空") } // 可以使用append方法在数组后面添加新的数据项 shopingList2.append("Dog") // 除此之外,使用加法赋值运算符(+=)也可以直接在数组后面添加一个或多个拥有相同类型的数据项 shopingList2 += ["M"] // 通过下标获取值 shopingList2[0] // 通过下标来修改值 shopingList2[0] = "eGGS" // 改变多个值 // 从下标1至下标三,替换为赋值的值 shopingList2[1...3] = ["Enda","Yuan"] // 调用数组的insert(atIndex:)方法来在某个具体索引值之前添加数据项 shopingList2.insert("Chaina",atIndex:3) // 使用removeAtIndex方法来移除数组中的某一项 shopingList2.removeAtIndex(1) // 移除最后一项 使用 removeLast shopingList2.removeLast() // 数组遍历 for item in shopingList2{ println(item) } // 加上索引遍历 // 如果我们同时需要每个数据项的值和索引值,可以使用全局enumerate函数来进行数组遍历。enumerate返回一个由每一个数据项索引值和数据值组成的元组。我们可以把这个元组分解成临时常量或者变量来进行遍历 for (index,value) in enumerate(shopingList2){ println("index:\(index) value:\(value)") } shopingList2 // 我们可以使用构造语法来创建一个由特定数据类型构成的空数组 var someInt = [Int]() someInt.append(3) someInt someInt = [] // someInts 现在是空数组,但是仍然是[Int]类型的 // Swift 中的Array类型还提供一个可以创建特定大小并且所有数据都被默认的构造方法。我们可以把准备加入新数组的数据项数量(count)和适当类型的初始值(repeatedValue)传入数组构造函数 var threeDoubles = [Double](count: 3,repeatedValue:0.0) threeDoubles // 因为类型推断的存在,我们使用这种构造方法的时候不需要特别指定数组中存储的数据类型,因为类型可以从默认值推断出来 var another = Array(count:3,repeatedValue:2.5) // 最后,我们可以使用加法操作符(+)来组合两种已存在的相同类型数组。新数组的数据类型会被从两个数组的数据类型中推断出来: var sixDoubles = threeDoubles + another