Ruby 收益率和 For 循环
Ruby Yield and For Loop
我正在学习 each
与 Ruby 中的 for
循环的简单教程。这应该是更简单的示例之一,但出于某种原因,我不理解 yield 语句和 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}
我只是不明白第一个示例是如何工作的。谢谢你的帮助。
for i in MyEachThing.new
p i
end
类似于:
MyEachThing.new.each do |i|
p i
end
这意味着,您正在 MyEachThing
实例上调用 each
方法并将 i
传递给块。
并且,yield
等同于:block.call
表示,您正在使用传递的参数调用块(在本例中为 i
)。
yield i
等同于:block.call(i)
并且您的块只是打印 i
.
的值
我正在学习 each
与 Ruby 中的 for
循环的简单教程。这应该是更简单的示例之一,但出于某种原因,我不理解 yield 语句和 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}
我只是不明白第一个示例是如何工作的。谢谢你的帮助。
for i in MyEachThing.new
p i
end
类似于:
MyEachThing.new.each do |i|
p i
end
这意味着,您正在 MyEachThing
实例上调用 each
方法并将 i
传递给块。
并且,yield
等同于:block.call
表示,您正在使用传递的参数调用块(在本例中为 i
)。
yield i
等同于:block.call(i)
并且您的块只是打印 i
.