0

配列内の各値を 2 倍にする必要があります。double がコマンドではないことは知っていますが、他に何を使用すればよいかわかりません。

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

4 に答える 4

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 に答える