需要将我的数组中的每个值加倍。我知道 double 不是命令,但不确定还能使用什么。
odds = [1,3,5,7,9]
array.each do |x|
x += double
print "#{x}"
end
需要将我的数组中的每个值加倍。我知道 double 不是命令,但不确定还能使用什么。
odds = [1,3,5,7,9]
array.each do |x|
x += double
print "#{x}"
end
用于Array#map
创建新数组
odds = [1,3,5,7,9]
arr = odds.map{|x| x*2}
arr.inspect
# => [2,6,10,14,18]
要修改相同的数组,请使用Array#map!
odds = [1,3,5,7,9]
odds.map!{|x| x*2}
odds.inspect
# => [2,6,10,14,18]
最简单的做法是使用Array#map和Kernel#p简单地迭代您的数组。例如:
odds = [1, 3, 5, 7, 9]
odds.map { |i| p i*2 }
如果您需要更多控制,您可以创建一个处理块或返回枚举数的自定义方法。例如:
def double *array
array.flatten!
block_given? ? array.map { |i| yield i*2 } : array.map { |i| i*2 }.to_enum
end
enumerator = double 1, 2, 3
#=> #<Enumerator: ...>
enumerator.each { |i| p i }
#=> [2, 4, 6]
double(1, 2, 3) { |i| p i }
#=> [2, 4, 6]
对于您的用例来说,这可能有点矫枉过正,但它是一种有用的技术,可以帮助您了解是否要使用枚举器和块。希望能帮助到你!
你的意思是“双”乘以2,还是双倍?
array = [1,3,5,7,9]
array.each { |x| print "#{x*2}"; }
但是您可能想要一个新数组,或者映射您现有的数组,
result = []
result = array.map { |x| x*2 }
#or
result = array.map! { |x| x*2 }
这是一个重复的例子,
result = []
array.map { |x| result << x; result << x; } #duplicate
见这里: http: //www.natontesting.com/2011/01/01/rubys-each-select-and-reject-methods/
我发现这样做的方法是乘以 / 等于 2。例如:
odds = [1,3,5,7,9]
odds.each do |x|
x *= 2
print x
end