Ruby reduce方法在这里是如何工作的?
我通读了ruby文档示例,但仍然不确定这段代码中发生了什么:Ruby reduce方法在这里是如何工作的?,ruby,Ruby,我通读了ruby文档示例,但仍然不确定这段代码中发生了什么: sentence = "How are you?" sentence.chars.reduce do |memo, char| %w[a e i o u y].include?(char) ? memo + char * 5 : memo + char end 第一次执行代码块时,备忘录是什么?接下来的5个步骤是什么样子的?由于您没有为reduce提供默认值,它将memo设置为句子.chars中的第一个值,即“H” 迭代#1
sentence = "How are you?"
sentence.chars.reduce do |memo, char|
%w[a e i o u y].include?(char) ? memo + char * 5 : memo + char
end
第一次执行代码块时,备忘录是什么?接下来的5个步骤是什么样子的?由于您没有为
reduce
提供默认值,它将memo
设置为句子.chars
中的第一个值,即“H”
迭代#1:
是备忘录
“H”
是char
“o”
- 块的结果是
“Hooooo”
是备忘录
“Hooooo”
是char
“w”
- 块的结果是
“hoooow”
sentence = "How are you?"
sentence.chars.reduce do |memo, char|
puts "Memo = #{memo}, char = #{char}"
%w[a e i o u y].include?(char) ? memo + char * 5 : memo + char
end
这太晚了,我知道,但我遇到了这个答案,我认为迭代1
char将是'o'而不是'e'。
因此块的结果将是:hoooo
,对于块2,memo
将是hoooo
char
将是w
,结果是:hoooo
谢谢!我一定是在测试时用了“Hello”之类的词。