2011-03-31 55 views

回答

32

YARV中已經實現了兩個功能,最有可能以Ruby 2.0結束的功能是特徵(mix)和Module#prepend

mix方法,不像現在的include方法,採用模塊的列表和混合所有的人在同一時間,確保他們沒有衝突的方法。它還爲您提供了一種輕鬆解決衝突的方法,例如,你想要混合兩個模塊定義相同的方法。所以,基本上,雖然include方法允許您將模塊視爲混合模塊,但mix方法允許您將模塊視爲特性。

Module#prepend混合模塊插入類或模塊,再次就像include確實,但代替將其插入到繼承鏈只是以上類,它插入只是下面的類。這意味着模塊中的方法可以覆蓋該類中的方法,並且可以使用super委託給重寫方法,這兩種方法在使用include時都是不可能的。這基本上使alias_method_chain過時。

已經討論了幾個月(或10年,取決於您如何計數)的一項功能是精修。現在已經有超過10年的討論添加了一種方法來在Ruby中執行有限範圍的安全猴子修補。即一種可以讓猴子修補核心課程的方式,但只有我的代碼能夠看到那個猴子補丁,其他代碼卻不能。多年來,這種安全的猴子補丁的領跑者是Selector Namespaces,然而最近,Classbox已經引起了很多關注,甚至最近,一個Classboxes變體Refinements的原型實現和規範被放入前鋒。

一般而言,Ruby 2.0的主題是可擴展性:將向上擴展以擴大團隊,擴大代碼庫,擴大問題規模,擴大機器,增加內核。但也可以將下調縮小到像嵌入式設備這樣的小型機器。

我上面提到的三個功能是擴展到更大的團隊和更大的代碼庫。一些提出的擴展到更大的問題規模和更多內核的功能是並行收集和並行實現Enumerable方法(如map)以及更好的併發抽象,如期貨,承諾,代理,演員,渠道,連接模式或類似的東西。

+0

+1非常詳盡的答案。 – DJTripleThreat 2011-04-18 04:39:20

+0

+1謝謝你的回答! – murrekatt 2011-04-25 12:20:16

相關問題