打字别名的目的

问题描述

我以为今天我终于明白了什么是typealias。

我没有。

让我们看一个例子:

let paths = document.querySelectorAll("svg path")
paths.forEach(p=>{
  let bb = p.getBBox()
p.setAttribute("transform",`translate(${-bb.x -bb.width/2 + 10},${-bb.y - bb.height/2 +10})`)
})

一切都很好。
然后我做了一个小改动:

typealias Graph = [String: [String]]

let futurama: Graph = [
    "you": ["bender","hermes","scruffy"],"bender": ["hubert","zoidberh"],"hermes": ["hubert","amy","hubert": ["mom","fry"],"fry": ["leela"],"leela": ["brannigan","nibbler","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",... 将不会编译,因为futurama.bfs()没有方法futurama。我在想,这是多么出色的语言设计!
但是我很失望。没有改变。完全没有该代码仍然可以编译和运行。
所以...

  1. 什么是typealias?
  2. 如何实现我期望的行为?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)