我有一个4维NArray
,我覆盖#each
,因此它只会迭代一个维度,然后使用include Enumerable
来处理#reject
等功能,#inject
等。但是,#sort
仍会遍历每个单独的元素而不是我选择的维度。
有没有办法明确使用Enumerable
的{{1}}方法,还是我必须自己写?我只需要调用一次(到目前为止),所以它可能有点奇怪或不方便。
注意:我发现this question可能看似重复。但是,我不想总是覆盖#sort
,而只是明确地调用#sort
的{{1}}方法。
答案 0 :(得分:0)
如果你在第一级调用sort
,其元素是数组,那么sort
将比较数组。为了比较数组,评估必须进入这些数组,这意味着它将遍历每个级别的数组。比较数组元素同时避免迭代进入子级是没有意义的。所以如果这是你想要做的事情,那么就没有办法了。
答案 1 :(得分:0)
NArray已经#sort
方法,现有方法不会通过include
覆盖。在Ruby 2.0中,您可以使用prepend
代替include
。