如何从Ruby中的块内访问数组?
例如:
[1,2,3].each{|e| puts THEWHOLEARRAY.inspect }
THEWHOLEARRAY
应返回[1,2,3]
。
答案 0 :(得分: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
答案 1 :(得分:1)
目前还不清楚你想做什么。你的意思是这样的吗?:
THEWHOLEARRAY = [1,2,3]
THEWHOLEAREAY.each{ |e|
puts THEWHOLEARRAY.inspect
}
Ruby允许您访问块外的变量。通常它会是另一个变量,而不是你正在迭代的变量。
答案 2 :(得分:0)
你做不到。块变量仅保存有关每次迭代的单个元素的信息。它没有整个阵列的信息。此外,each
将迭代与数组中元素数一样多的次数。你想多次检查吗?这没有意义。