1

您是否知道更好、更快、更智能、更高效或更优雅的方式来执行以下操作?

由于这个数组

a = [171, 209, 3808, "723", "288", "6", "5", 27, "22", 207, 473, "256", 67, 1536] 

得到这个

a.map{|i|i.to_i}.sort{|a,b|b<=>a}
 => [3808, 1536, 723, 473, 288, 256, 209, 207, 171, 67, 27, 22, 6, 5]
4

2 回答 2

2

您可以使用就地突变来避免创建新数组:

a.map!(&:to_i).sort!.reverse!

但是,如果没有基准,很难知道它是否更快或更有效。

于 2012-11-29T23:50:53.820 回答
2

这是一个使用symbol#to_proc

a.map(&:to_i).sort.reverse

这比使用就地修饰符 ( !) 方法更快,但使用更多内存。作为奖励,a如果您想用它做任何其他事情,它会保持原始数组完好无损。

于 2012-11-29T23:51:37.360 回答