1

Rubyのブロック内から配列にアクセスするにはどうすればよいですか?

例えば:

[1,2,3].each{|e| puts THEWHOLEARRAY.inspect }

どこTHEWHOLEARRAYに返す必要があり[1,2,3]ます。

4

3 に答える 3

1

あなたが何をしたいのかは正確には明らかではありません。次のような意味ですか?:

THEWHOLEARRAY = [1,2,3]
THEWHOLEAREAY.each{ |e|
  puts THEWHOLEARRAY.inspect
}

Ruby では、ブロック外の変数にアクセスできます。通常、それは別の変数であり、反復している変数ではありません。

于 2013-06-23T17:21:58.267 に答える
1

あなたが探しているのはtap、すでに実装されている次のいずれかです。

[1, 2, 3].tap { |ary|
  puts ary.inspect
  ary.each { |e|
    # ...
  }
  'hello' ' ' + 'world' # return value demo
} # returns the original array

またはergoメソッド、近日公開予定:

class Object; def ergo; yield self end end # gotta define it manually as of Ruby 2.0.0
[1, 2, 3].ergo { |ary|
  puts ary.inspect
  ary.each { |e|
    # ...
  }
  'hello' ' ' + 'world' # return value demo
} # returns the block return value
于 2013-06-23T17:10:10.433 に答える
0

それはいけません。ブロック変数は、反復ごとに 1 つの要素に関する情報のみを保持します。アレイ全体の情報はありません。さらに、each配列内の要素の数だけ反復します。そんなに何度も検査するの?それは意味がありません。

于 2013-06-23T17:10:11.393 に答える