Rubyのブロック内から配列にアクセスするにはどうすればよいですか?
例えば:
[1,2,3].each{|e| puts THEWHOLEARRAY.inspect }
どこTHEWHOLEARRAY
に返す必要があり[1,2,3]
ます。
Rubyのブロック内から配列にアクセスするにはどうすればよいですか?
例えば:
[1,2,3].each{|e| puts THEWHOLEARRAY.inspect }
どこTHEWHOLEARRAY
に返す必要があり[1,2,3]
ます。
あなたが何をしたいのかは正確には明らかではありません。次のような意味ですか?:
THEWHOLEARRAY = [1,2,3]
THEWHOLEAREAY.each{ |e|
puts THEWHOLEARRAY.inspect
}
Ruby では、ブロック外の変数にアクセスできます。通常、それは別の変数であり、反復している変数ではありません。
あなたが探しているのは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
それはいけません。ブロック変数は、反復ごとに 1 つの要素に関する情報のみを保持します。アレイ全体の情報はありません。さらに、each
配列内の要素の数だけ反復します。そんなに何度も検査するの?それは意味がありません。