这个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书籍)是等价的。“产量是如何使用的,这让我感到困惑。”灯罩我正试图向你们解释。。。那么,你还不明白什么?我知道收益率的使用现在发生了什么。如果我重写了很长一段路