Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511479
  • 博文数量: 130
  • 博客积分: 10060
  • 博客等级: 上将
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-21 12:35
文章分类

全部博文(130)

文章存档

2011年(2)

2010年(9)

2009年(41)

2008年(78)

我的朋友

分类:

2009-06-11 10:24:06

六个比较操作,==、<、<=、~=、>、>=,Lua的指令只实现了前三个,后三个是对它们取反或应用交换律实现的;

同样的,比较元方法也只存在前三种;

PiL中说Lua4.0以前连<=的元方法都是对<应用交换并对结果取反实现的,即a <= b -> not (b < a),但碰到partial order的情况就不成立了;

但是在虚拟机的<=元方法的调用中却在其不存在的情况下使用了上面的转化,这应该是有问题的

列举出各种转化方式后发现,除了这种转化,其他的都需要两次比较操作,还需要配合and或or,而且有些转化还需要另外两种比较元方法,只有<=可以不借助另一比较操作来实现第三个比较操作;

但是实现中没有调用<=元方法来处理==、<的元方法不存在的情况,可能基于性能的考虑,不想调用两次;所以,考虑性能的话,这种复用转化实现是不好的,不同的需求应用专门的实现,也不再耦合。
阅读(573) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~