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 に答える