我尝试skip
一个加法,如果字符串的长度等于4,但我的代码给我一个错误:
下面是我的代码:
strings = ["one", "two", "four", "abc", "fgh"]
total = strings.inject(0) do |sum, str|
next if str.length == 4
sum + str.length
end
puts total
error说:
main.rb:13:in `block in <main>': undefined method `+' for nil:NilClass (NoMethodError)
from main.rb:10:in `each'
from main.rb:10:in `inject'
from main.rb:10:in `<main>'
next if
的工作不是跳过一个迭代吗?有谁能告诉我哪里做错了吗?谢谢你,谢谢
1条答案
按热度按时间uidvcgyl1#
这里的错误发生是因为当你调用
next
的时候,你把nil传递给了循环的下一次迭代。next
实际上并没有跳过迭代。它只是停止块的进一步执行,并有一个返回值。