前言
用Swift写了这么老长时间的项目, 确从来没有看过Swift官方文档, 全靠感觉, 大家有这样的情况吗?
基本定义
Array 有序数据集
Set 无序无重复数据集
Dictionary 无序键值对的集
数组的创建
// 创建一个空数组
var someInts = [Int]()
print("items \(someInts.count)")
// 如何已知数组的类型信息, 可以这样使用
someInts = []
print(someInts)
// 带有默认值的数组
var someDoubles = Array(repeating: 0.0, count: 3)
print(someDoubles)
// 数组相加
var threeDoubles = Array(repeating: 2.5, count: 3)
var sixDoubles = someDoubles + threeDoubles
print(sixDoubles)
// 字面量构造数组, 通过推断, 数组类型为[String]
var shoppingList = ["eggs", "milk"]
print(shoppingList)数组的访问和修改
// 数组中元素个数
print("The shopping list contains \(shoppingList.count) items")
// 数组是否空
if shoppingList.isEmpty {
print("The shopping list is empty")
} else {
print("The shopping list is not empty")
}
// 添加数据 单一元素 appen()
shoppingList.append("flour")
// 添加数据 多个元素
shoppingList += ["apple", "orange"]
print(shoppingList)
// 获取值: 单个元素
print("The first item is \(shoppingList[0])")
// 获取值: 多个元素
print("The some item is \(shoppingList[2...4])")
// 修改值: 单个元素
shoppingList[2] = "purple"
// 修改值: 多个元素
shoppingList[2...4] = ["banana"]
// 在某个位置添加元素
shoppingList.insert("peach", at: 1)
// 从某个位置移除某个元素
shoppingList.remove(at: 2)数组的遍历
// 普通遍历
for obj in shoppingList {
print(obj)
}
// 索引值, 元素值
for (index, value) in shoppingList.enumerated() {
print("Item \(index): \(value)")
}集合的创建
// 创建一个空的集合, 类型被推断为Set<Character>
var letters = Set<Character>()
print("\(letters.count) items")
// 当已知集合类型时, 可以直接这样置空
letters = []
print(letters)
// 用数组字面量创建集合
//var favouriteFruit: Set<Character> = ["apple", "orange", "banana"]
// 简化模式
var favouriteFruit: Set = ["orange", "apple", "banana"]访问修改一个集合
// 集合中的个数
print(favouriteFruit.count)
// 集合是否为空
if letters.isEmpty {
print("The Set is empty")
} else {
print("The Set is not empty")
}
// 添加一个元素
favouriteFruit.insert("peach")
// 移除一个元素
if let removeFruit = favouriteFruit.remove("apple") {
print("successed remove \(removeFruit)")
} else {
print("failed remove")
}
if favouriteFruit.contains("banana") {
print("the Set contains it")
} else {
print("the Set don't contains it")
}遍历一个集合
for fruit in favouriteFruit {
print(fruit)
}
// 集合转换成数组, 再遍历
for fruit in favouriteFruit.sorted() {
print(fruit)
}集合的基本操作
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigits: Set = [2, 3, 5, 7]
// 两个集合的并集
print(oddDigits.union(evenDigits).sorted())
// 两个集合的交集
print(oddDigits.intersection(singleDigits).sorted())
// 一个集合中的值, 不在另一个集合中, 创建一个新的值
print(oddDigits.subtracting(singleDigits))
// 两个集合不相交的值创建一个集合
print(oddDigits.symmetricDifference(singleDigits).sorted())集合中的成员关系
let houseAnimals: Set = ["dog", "cat"]
let farmAnimals: Set = ["cow", "chicken", "sheep", "dog", "cat"]
let cityAnimals: Set = ["bird", "mouse"]
// 一个集合中的所有值是否被包含在另一个集合中
print(houseAnimals.isSubset(of: farmAnimals))
// 一个集合是否包含另一个集合中的所有值
print(farmAnimals.isSuperset(of: houseAnimals))
// 两个集合是否不含有相同的值
print(farmAnimals.isDisjoint(with: cityAnimals))创建字典
// 创建一个空字典
var nameofInts = [Int:String]()
print(nameofInts)
// 如果已知类型信息, 可以直接这样使用
nameofInts = [:]
// 字面量创建字典, 类型推断为 [String:String]
var airports = ["YYZ":"Toronto Pearson", "DUB":"Dublin"]访问修改字典
// 字典中数据项数量
print("\(airports.count) items")
if airports.isEmpty {
print("the airports dictionary is empty")
} else {
print("the airports dictionary is not empty")
}
// 添加数据项
airports["LHR"] = "London"
print(airports)
// 修改数据项
airports["LHR"] = "London heathrow"
// 将某个键的值设置为nil, 来移除这个数据项
airports["APL"] = "Apple internation"
airports["APL"] = nil字典遍历
for (airCode, airName) in airports {
print("\(airCode) is \(airName)")
}
// 遍历字典的键
for airportCode in airports.keys {
print("Airport code is \(airportCode)")
}
for airportName in airports.values {
print("Airport name is \(airportName)")
}