Open jiangleligejiang opened 4 years ago
如果两个元组的元素相同,且长度相同的话,元组就可以被比较。比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。
(1, "zebra") < (2, "apple") // true,因为 1 小于 2 (3, "apple") < (3, "bird") // true,因为 3 等于 3,但是 apple 小于 bird (4, "dog") == (4, "dog") // true,因为 4 等于 4,dog 等于 dog
使用is
来判断对象类型,相当于OC中的isKindofClass
func fetchList() {
guard let data = data else { return }
switch data {
case is Film:
fetch(data.listItems, of: Starship.self)
case is Starship:
fetch(data.listItems, of: Film.self)
default:
print("Unknown type: ", String(describing: type(of: data)))
}
}
使用
"""
来包含多行的字符串let singleLineString = "These are the same." let multilineString = """ These are the same. """
indices
属性会创建一个包含全部索引的范围
for index in greeting.indices {
print("\(greeting[index]) ", terminator: "")
}
for index in greeting.indices {
print("\(greeting[index]) ", terminator: "")
}
// 打印输出“G u t e n T a g ! ”
使用泛型来定义通用的数据结构,以便实现通用方法
private func fetch<T: Decodable & Displayable>(_ list: [String], of: T.Type) {
var items: [T] = []
let fetchGroup = DispatchGroup()
list.forEach { (url) in
fetchGroup.enter()
AF.request(url).validate().responseDecodable(of: T.self) { (response) in
if let value = response.value {
items.append(value)
}
fetchGroup.leave()
}
}
fetchGroup.notify(queue: .main) {
self.listData = items
self.listTableView.reloadData()
}
}
基础部分
let assumedString: String! = "An implicitly unwrapped optional string." let implicitString: String = assumedString
assert
和precondition
的区别