ruby 1.9.2和ruby 2.0之间的主要/次要差异是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (50)

我被告知ruby 1.9.2是ruby 2.0,但ruby 1.9.3将在不久的将来发布,它将包含一些性能提升。

那么他们为2.0计划什么?它会比ruby 1.9.x大不相同吗?

提问于
用户回答回答于

在YARV中已经实现的两个特性,最有可能以Ruby 2.0结束的特性是特性(mix)和Module#prepend

mix方法,不像现在的include方法,需要一个列表模块,并结合了所有的人在同一时间,确保他们没有冲突的方法。它也提供了一种轻松解决冲突的方法,例如,如果要混合两个模块来定义相同的方法。所以,基本上,虽然该include方法允许将模块视为混合,但该mix方法允许将模块视为特性。

Module#prepend将模块混合到一个类或模块中,就像include这样,但不是将它插入类之上的继承链中,而是将其插入类的下面。这意味着模块中的方法可以重写类中的方法,并且可以将它们委派给重载方法super,这两种方法在使用时都是不可能的include。这基本上alias_method_chain已经过时。

一个已经讨论了几个月(或10年,取决于你如何计数)的功能是精修。现在已经有超过10年的讨论添加了一种方法来在Ruby中执行有限范围的安全猴子修补。也就是说,我可以为猴子补丁一个核心类,但只有我的代码可以看到这个猴子补丁,其他代码不会。多年来,这种安全猴子补丁的领跑者是Selector命名空间,然而最近,Classbox已经引起了很多关注,甚至最近,一个Classboxes变体Refinements的原型实现和规范被放入前锋。

一般来说,ruby2.0的大主题是可扩展性:增加了对大团队,大的代码库,更大的问题大小,更大的机器,更多的内核。

扫码关注云+社区