Joseph Campbell once said, “computers are like Old Testament gods: lots of rules and no mercy.”
好喜欢这句话。计算机像是旧时代的神,全部都是规则,没有仁慈。一切都是按指定的规则运行。所以,编程这件事,不就是在造神嘛? 是不是有点热血沸腾,又想敲代码啦~
03 - Array Dictionary Set Enums
-
Array
创建一个数组
var scores = Array()
var albums = [String]()
var albums2 = ["Folklore"]
数组添加的数据类型需要是同一类型的。使用append
方法添加。
var temperatures = [25.3, 28.2, 26.4]
var intTemp : Int = 0
// 不能添加不同类型
// temperatures.append("Chris")
// temperatures.append(intTemp)
temperatures.append(1) // 1会被自动转成Double型
获取数组元素个数:.count
删除数组指定元素:remove(at:)
删除全部元素removeAll()
判断数组是否包含某个元素contains()
对数组元素进行排序sorted()
,将返回一个新的数组
对数组元素进行反转reversed()
,将返回一个新的数组
Tips:
当反转一个数组的时候,并不需要真的反转整个数组。所以swift将数组包装了一层ReversedCollection>,不要惊讶地发现它不再只是一个简单的数组!
在赋给新的数组的时候,它会自动去除包装的一层。
使用这种会产生新的数组的方法的时候,ed
会产生一个新的数组,不加ed
会直接在原数组上修改。例如sort()
和sorted()
-
Dictionary
创建一个字典
var heights = [String: Int]()
let olympics = [
2012: "London"
]
字典取值可以加一个默认值来拆包。
print(olympics[2012, default: "Unknown"])
获取字典元素个数:.count
删除全部元素:removeAll()
-
Set
创建一个集合
var people = Set()
// 这里要注意下,Set([...]) 中的"[ ]"
let people2 = Set(["Denzel Washington", "Tom Cruise", "Nicolas Cage", "Samuel L Jackson"])
将集合的元素排序后返回数组:sorted()
添加一个元素:insert
获取集合元素个数:.count
判断是否包含某个元素:contains()
Tips:集合相对于数组有一个特别大的优点,那就是查找速度特别快。不管集合中的元素有多大,
contains()
方法能很快的得出结果。数组会遍历元素。
-
Enum
定义一个枚举类型的基本写法
enum Weekday {
case monday
case tuesday
case wednesday
case thursday
case friday
}
或者,可以快速定义:
enum Weekday {
case monday, tuesday, wednesday, thursday, friday
}
Tips: 许多语言没有枚举也可以正常运行。对于枚举的存在,应该是更好的避免书写错误。比如,可以使用"monday", "tuesday","wednesday", "thursday", "friday"来区分类型,但是在使用的时候,很容易拼写错误,或者忘记对应的类型。