我一直坚持这个问题。我很感激任何帮助。
说明 "在odds数组上使用.each方法打印出数组中每个项目值的两倍。换句话说,将每个项目乘以2。
确保使用print而不是puts,因此输出显示在一行上。"
我的代码
odds = [1,3,5,7,9]
odds.each do |placeholder|
odds *= 2
print odds
end
答案 0 :(得分:5)
odds = [1,3,5,7,9]
odds.each do |placeholder|
odds *= 2
print odds
end
您对此#each
的使用是正确的,但请记住#each
收到::Enumerable
个对象,传入的块使用变量placeholder
将值封装在在迭代的当前点::Array
。因此,您需要使用placeholder
来检索要加倍的值,而不是odds
,因为odds
仍然是::Array
函数中的::Enumerable
#each
。
这段代码可以写成两行,如下所示:
odds = [1,3,5,7,9]
odds.each {|placeholder| print placeholder * 2 }
严格地说,#map
将是执行此操作的首选方法。
答案 1 :(得分:2)
odds.each { |x| print "#{x*2}" }
ruby-ish方式:
print odds.map {|x| x*2}.join(' ')
答案 2 :(得分:1)
您尝试在代码的每次迭代中将Array
odds
乘以2。对于数组中的每个项,do |placeholder|
表示',给我单个元素并将其命名为placeholder
'。
所以你需要使用placeholder *= 2
。
但是,由于您没有改变odds
中的原始值,因此您可以只用print placeholder * 2
缩短内部块。
此外,虽然问题可能在于使用:each
,但:map
对您正在做的事情更为规范。使用map可以让你将每个元素加倍:
odds.map{ |i| i*2 }
答案 3 :(得分:0)
odds
是你的数组。 placeholder
表示数组中的值。如果没有明确地为您提供答案,您想要做的是将值乘以2,而不是数组本身。
答案 4 :(得分:0)
在这里,我成功完成了
odds = [1,3,5,7,9]
odds.each do |x|
x *= 2
print x
end