0

需要将我的数组中的每个值加倍。我知道 double 不是命令,但不确定还能使用什么。

 odds = [1,3,5,7,9]
  array.each do |x|
  x += double
  print "#{x}"
  end
4

4 回答 4

1

用于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]
于 2013-10-16T03:37:36.110 回答
0

做最简单的事情

最简单的做法是使用Array#mapKernel#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]

对于您的用例来说,这可能有点矫枉过正,但它是一种有用的技术,可以帮助您了解是否要使用枚举器和块。希望能帮助到你!

于 2013-10-16T04:22:29.367 回答
0

你的意思是“双”乘以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/

于 2013-10-16T03:43:05.783 回答
0

我发现这样做的方法是乘以 / 等于 2。例如:

odds = [1,3,5,7,9]
odds.each do |x|
    x *= 2
    print x
end
于 2016-04-20T16:12:12.117 回答