【发布时间】:2020-08-18 08:43:43
【问题描述】:
我以为今天我终于明白 typealias 是干什么用的了。
我没有。
我们来看一个例子:
typealias Graph = [String: [String]]
let futurama: Graph = [
"you": ["bender", "hermes", "scruffy"],
"bender": ["hubert", "zoidberh"],
"hermes": ["hubert", "amy", "scruffy"],
"hubert": ["mom", "fry"],
"fry": ["leela"],
"leela": ["brannigan", "nibbler", "scruffy"],
"amy": ["kif"],
"brannigan": ["kif"],
"zoidberh": [],
"kif": [],
"mom": [],
"nibbler": [],
"scruffy": []
]
extension Graph {
// Breadth First Search
func bfs(from start: String, to finish: String) -> [String]? {
// Implementation of this graph algorithm here
}
}
print(
futurama.bfs(from: "you", to: "scruffy")?.joined(separator: " --> ") ?? "There is no pass, sorry"
)
一切都很好。
然后我做了一个小改动:
let futurama: [String: [String]] = [
"you": ["bender", "hermes", "scruffy"],
"bender": ["hubert", "zoidberh"],
...
我期待现在futurama.bfs() 不会编译,因为futurama 没有方法bfs。我在想,这是多么聪明啊,这门语言的设计真是太棒了!
但我很失望。没有改变。完全没有。代码仍然可以编译和工作。
所以...
- typealias 有什么用?
- 如何实现我期望的行为?
【问题讨论】:
-
extension Dictionary where Value: Collection, Value.Element: StringProtocol {
标签: swift type-alias