作者:Because_of_you龙 | 来源:互联网 | 2023-01-31 20:33
找到最长的单词.
lOngest= %w{cat sheep bear}.inject do |memo, word|
memo.length > word.length ? memo : word
end
我猜这memo
将从值开始,"cat"
因为inject
没有收到任何参数.我也猜测第一个值word
将是sheep
,然后是word
和bear
.
我没有关注块及其语法中发生的事情.如果有人可以详细说明,我将不胜感激.
1> Sagar Pandya..:
所以我猜这个备忘录将以值cat开始,因为inject没有传递给它的参数.
文件说:
如果没有为memo显式指定初始值,那么集合的第一个元素将用作memo的初始值.
我还猜测第一个单词将是绵羊......然后下一个单词,熊.
您可以使用puts
检查每个阶段栏的最终赋值,但这只是inject方法的返回值:
lOngest= %w{ cat sheep bear }.inject do |memo, word|
puts "memo is currently #{memo}",
"word is currently #{word}",
"-----------------------"
memo.length > word.length ? memo : word
end
#memo is currently cat
#word is currently sheep
#-----------------------
#memo is currently sheep
#word is currently bear
#-----------------------
longest #=> "sheep"
其他方式
最后,另一种更加Rubyish的方法来获得最长的词:
%w{ cat sheep bear }.max_by(&:length) #=> "sheep"