【发布时间】:2015-06-01 19:03:07
【问题描述】:
我是 JavaScript 的 graph datastructure library 的作者。我目前是ES6-ifying图书馆。
我还想让它对 ES6 程序员更有用,这意味着实现 iterable protocol。但是一个图有多个要迭代的东西,以及迭代它们的多种方式(顶点、边、后继、前驱、拓扑顺序中的顶点等)
我对如何设计此界面有一个想法,但我想遵循现有的约定(如果存在)。这是我如何执行“顶点”部分的示例:
class JsGraph {
// ...
get vertices() {
return {
_graph: this,
get length() { return this._graph._vertexCount },
*[Symbol.iterator]() {
var keys = Object.keys(this._graph._vertices);
for (let i = 0; i < keys.length; ++i) {
yield [keys[i], this._graph._vertices[keys[i]]];
}
}
};
}
// ...
}
如果我可能应该遵循任何现有约定(或此代码有任何问题),我们将非常感谢您的反馈。
【问题讨论】:
标签: javascript conventions ecmascript-6 iterable