新的DLR tree改变了Visitor的设计

[url=http://rednaxelafx.iteye.com/blog/246814]之前的一帖[/url]提到过访问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中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值