这个Ruby块是如何从雄辩的Ruby中工作的?
我知道您可以使用这个Ruby块是如何从雄辩的Ruby中工作的?,ruby,enumeration,Ruby,Enumeration,我知道您可以使用yield 然而,我不知道yield在这里做什么。我知道有些“盗梦空间” 正在发生的事情 def each_word words = %w(fuing wtrds iiha) words.each { | word | yield(word) } end 经过一个街区 一, 输出 **fuing** **wtrds** **iiha** Fuing Wtrds Iiha 二, 输出 **fuing** **wtrds** **iiha** Fuing W
yield
然而,我不知道
yield
在这里做什么。我知道有些“盗梦空间”
正在发生的事情
def each_word
words = %w(fuing wtrds iiha)
words.each { | word | yield(word) }
end
经过一个街区
一,
输出
**fuing**
**wtrds**
**iiha**
Fuing
Wtrds
Iiha
二,
输出
**fuing**
**wtrds**
**iiha**
Fuing
Wtrds
Iiha
等等。您的代码段将遍历
%w(fuing wtrds iiha)
(即“fuing”、“wtrds”、“iiha”
)中的所有单词,然后将每个单词生成一个块,该块将传递给每个单词
方法。例如,如果您这样调用该方法:
each_word do | word |
puts word
end
这会将每个单词打印到控制台;输出将是
fuing
wtrds
iiha
在我看来,代码最好写为:
words = %w(fuing wtrds iiha)
words.each do | word |
puts word
end
因为这将产生完全相同的效果。-1这并没有回答关于在块中使用产生的问题。问题是问题中引用的块(一段代码)是如何工作的。我展示了它。问题不在于“在块中使用收益率”。是的,你的代码和我的(雄辩的Ruby书籍)是等价的。“产量是如何使用的,这让我感到困惑。”灯罩我正试图向你们解释。。。那么,你还不明白什么?我知道收益率的使用现在发生了什么。如果我重写了很长一段路