在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