Доступ к значению массива из блока Ruby Enumerator
Как я могу получить доступ к массиву из блока в Ruby?
Например:
[1,2,3].each{|e| puts THEWHOLEARRAY.inspect }
куда THEWHOLEARRAY
должен вернуться [1,2,3]
,
3 ответа
Решение
То, что вы ищете, это либо 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
Не совсем понятно, что вы хотите сделать. Ты имеешь в виду что-то подобное?
THEWHOLEARRAY = [1,2,3]
THEWHOLEAREAY.each{ |e|
puts THEWHOLEARRAY.inspect
}
Ruby позволяет получить доступ к переменным вне блока. Обычно это будет другая переменная, а не та, с которой вы перебираете.
Ты не можешь. Переменная блока содержит только информацию об одном элементе для каждой итерации. Он не имеет информации о всем массиве. Более того, each
будет повторять столько раз, сколько элементов в массиве. Вы хотите проверить это много раз? Это не имеет смысла.