使用mixin覆盖类方法

时间:2013-04-19 14:29:46

标签: ruby sorting

我有一个4维NArray,我覆盖#each,因此它只会迭代一个维度,然后使用include Enumerable来处理#reject等功能,#inject等。但是,#sort仍会遍历每个单独的元素而不是我选择的维度。

有没有办法明确使用Enumerable的{​​{1}}方法,还是我必须自己写?我只需要调用一次(到目前为止),所以它可能有点奇怪或不方便。

注意:我发现this question可能看似重复。但是,我不想总是覆盖#sort,而只是明确地调用#sort的{​​{1}}方法。

2 个答案:

答案 0 :(得分:0)

如果你在第一级调用sort,其元素是数组,那么sort将比较数组。为了比较数组,评估必须进入这些数组,这意味着它将遍历每个级别的数组。比较数组元素同时避免迭代进入子级是没有意义的。所以如果这是你想要做的事情,那么就没有办法了。

答案 1 :(得分:0)

NArray已经#sort方法,现有方法不会通过include覆盖。在Ruby 2.0中,您可以使用prepend代替include