我知道您可以使用将变量传递给 Ruby 代码块,yield
但是,我不知道yield
这里在做什么。我知道发生了一些“盗梦空间”的事情。
def each_word
words = %w(fuing wtrds iiha)
words.each { | word | yield(word) }
end
我知道您可以使用将变量传递给 Ruby 代码块,yield
但是,我不知道yield
这里在做什么。我知道发生了一些“盗梦空间”的事情。
def each_word
words = %w(fuing wtrds iiha)
words.each { | word | yield(word) }
end
您的代码将遍历%w(fuing wtrds iiha)
(ie "fuing", "wtrds", "iiha"
) 中的所有单词,然后将yield
每个单词传递给传递给该each_word
方法的块。例如,如果您像这样调用该方法:
each_word do | word |
puts word
end
这会将每个单词打印到控制台;输出将是
fuing
wtrds
iiha
在我看来,代码最好写成:
words = %w(fuing wtrds iiha)
words.each do | word |
puts word
end
因为这将产生完全相同的效果。
通过一个块。
1.
each_word{|w| puts "**#{w}**"}
输出
**fuing**
**wtrds**
**iiha**
2.
each_word{|w| puts w.capitalize}
输出
Fuing
Wtrds
Iiha
等等