在Ruby中,如果我要循環集合,Ruby會評估枚舉集合多少次?Ruby評估循環的枚舉集合多少次?
具體來說,我想對一個集合進行排序,並遍歷排序後的集合。因爲我已經沒有必要保持分類收集副本的時候,我想我會只寫循環爲:
for item in @items.sort{ |a,b| b.created_at <=> a.created_at } do
#do some stuff
end
然而,各具特色該代碼可愛一點我開始懷疑後,有多少次我可能實際上是調用排序。
上面的行確實只會收集一次嗎?或者,Ruby最終會對集合中的每個項目進行N次排序?
@ sepp2k在他的第二個例子中展示了循環集合的更習慣的'@ items.sort ...'形式。我認爲我沒有看到任何人在我讀過的所有源代碼中使用Ruby中的for/loop。我不知道爲什麼,但也許它只是Ruby方式。 – 2010-11-09 04:31:24
@Greg,謝謝。我仍然在學習'Ruby的方式',而Ruby的衆多循環構造讓我驚歎不已。我從來沒有見過有太多不同方式來迭代的語言。 – 2010-11-09 04:37:20
Ruby是我用過的最自由的語言;我聽說它幾次被稱爲禪宗式的。我認爲這不適合每個人,但對於那些適合自己的大腦的人來說,它非常優雅。 – 2010-11-09 05:00:48