1

如何从 Ruby 的块内访问数组?

例如:

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

THEWHOLEARRAY应该返回哪里[1,2,3]

4

3 回答 3

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 回答
1

目前还不清楚你想做什么。你的意思是这样的吗?:

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

Ruby 允许您访问块外的变量。通常它将是另一个变量,而不是您正在迭代的变量。

于 2013-06-23T17:21:58.267 回答
0

你不能。块变量仅保存有关每次迭代的单个元素的信息。它没有整个数组的信息。此外,each将迭代与数组中元素的数量一样多的次数。你要检查那么多次吗?它没有任何意义。

于 2013-06-23T17:10:11.393 回答