Dart 创建对象快照

Dart 创建对象快照,dart,dart-pub,object-serialization,Dart,Dart Pub,Object Serialization,我正在修补+我想建立一个2级变压器 这些阶段是: 为每个dart源文件生成 从第一阶段输出生成新的源(包含来自所有AST的信息) 我需要将AST从一个阶段传递到另一个阶段,而不需要昂贵的序列化/反序列化,但是不能从类实例构建Asset() 是否可以构建类实例快照并将其传递到下一阶段? 这就是我目前发现的: : Dart VM使用以下类型的快照: … 对象快照。通过创建需要发送到另一个隔离的Dart对象的快照,在Dart VM中实现从一个隔离到另一个隔离的消息传递 : 在特殊情况下,当两个隔离共享

我正在修补+我想建立一个2级变压器

这些阶段是:

  • 为每个dart源文件生成
  • 从第一阶段输出生成新的源(包含来自所有AST的信息)
  • 我需要将AST从一个阶段传递到另一个阶段,而不需要昂贵的序列化/反序列化,但是不能从类实例构建
    Asset
    ()

    是否可以构建类实例快照并将其传递到下一阶段?

    这就是我目前发现的:

    :

    Dart VM使用以下类型的快照:

    对象快照。通过创建需要发送到另一个隔离的Dart对象的快照,在Dart VM中实现从一个隔离到另一个隔离的消息传递

    :

    在特殊情况下,当两个隔离共享同一代码和 在同一进程中运行(例如,通过spawn创建的隔离),则 也可以发送对象实例(将在 过程)

    如果“对象快照”具有相同的限制,则它对我没有帮助。

    但是,非常有趣的是,通过将对象循环到生成的隔离对象,应该可以创建对象的“深度副本”(克隆)

    在@lrn中指出:

    我们通常不希望用任何方法来创建无法运行的对象 通过类的生成构造函数。你能读懂约书亚的话 布洛赫谈到了Java中的克隆: 即使有这样的经验 记住,我们可能能够避免接口问题,但我们不能 一般来说,决定一份深拷贝还是浅拷贝是正确的 去做。只有对象本身知道这一点


    因此,即使可能,也不建议使用此链接。

    您看过吗?@AlexandreArdhuin谢谢您的链接!这就是我用的。看@AlexandreArdhuin,真的很酷。我在考虑写一些东西,比如memoizer(@Cached in yours package),尾部递归优化,以及一些用于调试的东西,比如调用记录器、asserter。。