我想今天我终于明白什么是 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
。我想,这门语言的设计多么巧妙啊!
但我很失望。没有改变。完全没有。该代码仍然可以编译并运行。
So...
- 类型别名有什么用?
- 如何实现我期望的行为?