【发布时间】:2012-05-10 21:47:10
【问题描述】:
在讨论 Ruby 循环时,Niklas B. 最近谈到了与每个循环相比,for 循环“不引入新范围”。我想看看一些例子,说明人们对此有何感受。
好的,我扩展了这个问题:在 Ruby 中,我们还能在哪里看到 apears 的作用/结束块分隔符,但实际上里面没有范围?除了 for ... do ... end 还有什么?
好的,问题的另一个扩展,有没有办法用花括号 { block } 编写 for 循环?
【问题讨论】:
-
只是一个旁注(我已经在另一条评论中说过类似的话):
for的问题不仅在于它与使用do/end的其他构造有细微的不同,但它也只能用于一个原因:遍历可枚举。通常,来自函数式编程的构造(例如select或map)比直接从 C 继承的普通旧循环更适合表达问题。 -
反过来呢:您给出了您认为需要
for循环的真实示例,而我们为您提供了更好的选择? :) 否则我认为这个问题只是 stackoverflow.com/questions/3294509/for-vs-each-in-ruby 的重复 -
性能如何?不是比进入闭包更快吗?如果您想要在 for 循环中定义局部变量以供以后使用 :) 怎么办? (只是快速思考一下可能有什么好处:)
-
通常你应该更关心可读性而不是性能,否则你为什么要首先使用 Ruby。在循环中定义一个变量供以后使用,这听起来像是非常糟糕的设计。
标签: ruby