`
RednaxelaFX
  • 浏览: 3019415 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

新的DLR tree改变了Visitor的设计

    博客分类:
  • DLR
阅读更多
之前的一帖提到过访问DLR tree所使用的visitor的实现方式,与LINQ相同,都是由一个总的Visit()方法通过每个AST节点上的NodeType属性来判断节点类型并分发到具体的VisitXXX()方法上。

这种设计与常见的Visitor模式并不相同——常见的方式是为需要被访问的类层次中每个类设计一对Accept()/Visit()方法,以此实现double-dispatch的Visitor。在最近更新的IronPython/IronRuby源码中,可以看到ExpressionTreeVisitor已经确认会作为公开API提供。相应的,visitor也从基于NodeType的大switch的设计改回到普通的Visitor模式的设计。

根据观察,这些改变将不会进入IronPython 2.0,而会进入更后面的IronPython 2.1中。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics