我正在修补transformers + "analyzer" pub packages,我想建立一个2级变压器。
阶段是:
我需要将AST从一个阶段传递到另一个阶段而不需要昂贵的序列化/反序列化,但Asset
(docs)不能从类实例构建。
是否可以构建类实例快照并将其传递到下一阶段?
这就是我到目前为止所发现的:
From "Snapshots in Dart" article:
Dart VM使用以下类型的快照:
...
对象快照。通过创建需要发送到另一个隔离的Dart对象的快照,在Dart VM中实现从一个隔离到另一个隔离的消息传递。
在特殊情况下,两个隔离区共享相同的代码和 它在同一个进程中运行(例如通过spawn创建的隔离区) 也可以发送对象实例(将被复制) 过程)。
如果“对象快照”具有相同的限制,那么它无法帮助我。
但是,有趣的是,应该可以通过循环生成对象来创建对象的“深层复制”(克隆)。
在Issue 6459: clone instance(object) @lrn指出:
我们通常不希望创建一个不会出现的对象 通过班级的生成构造者。你可以阅读Joshua的内容 Bloch谈到了Java中的克隆: http://www.artima.com/intv/bloch13.html即使有这方面的经验 记住,我们或许可以避免界面问题,但我们不能 通常决定深层或浅层副本是否正确 去做。只有对象本身才知道。
所以即使可能,也不建议这样做。