1
我正在通过一个简单的教程each
vs for
循环在Ruby中的方式。这应该是一个简单的例子,但由于某种原因,我不理解yield语句和for循环之间的交互。红宝石量和For循环
class MyEachThing
def each
yield 1
yield 42
yield 2
yield 42
yield 3
end
end
for i in MyEachThing.new
p i
end
# >> 1
# >> 42
# >> 2
# >> 42
# >> 3
产量,我由接下来的例子对我来说很有意义:
def calling
p yield(45)
end
calling {|i| i*2}
我只是不明白第一个例子是如何工作的。感谢您的帮助。
@K明白了!谢谢。在这种情况下'for'方法在语法上似乎很奇怪。 'each'方法对我来说更有意义。 – inthenameofmusik
是的,使用'each'是比较好用的,因为它比较习惯。看到这篇文章的一些更有趣的信息:http://stackoverflow.com/questions/3294509/for-vs-each-in-ruby –
表达式不是很“等效”。如果在每个'end'后添加'pi',则在使用'for'时会打印'i'的最后一个值,而当使用'each'时会引发异常:'NameError:未定义的局部变量或方法'i'对于main:Object' .... –