这是唯一的区别:每:irb> [1,2,3].each { |x| } => [1, 2, 3]irb> xNameError: undefined local variable or method `x' for main:Object from (irb):2 from :0对于:irb> for x in [1,2,3]; end => [1, 2, 3]irb> x => 3通过for循环,迭代器变量在块完成后仍然存在。对于each循环,它不会,除非在循环开始之前已将其定义为局部变量。除此之外for,该each方法只是语法糖。如果@collection是nil两个回路抛出一个异常:例外:main:Object的未定义局部变量或方法“ @collection”