Доступ к текущему массиву внутри метода ruby
Есть ли способ использовать массив внутри метода, например, как в javascript вы можете отправить копию этого массива в обратный вызов?
так что-то вроде:
array.something.somethingelse.anotherthing do |element|
#i want to be able to use array.something.somethingelse here without
#having to call something and somethingelse on the original array again
end
1 ответ
Это очень нерегулярно, но вы всегда можете сделать это:
array.something.somethingelse.tap do |se|
se.anotherthing do |element|
end
end
Обычно вы создаете промежуточную переменную:
se = array.something.somethingelse
se.anotherthing do |element|
end
Там нет никакого реального преимущества для tap
подход, это не делает код более читабельным.
Честно говоря, лучший подход состоит в том, чтобы делегировать это функции вроде:
do_another_thing(array.something.somethingelse)
И тогда у вас есть свободная переменная в силу того, что она является аргументом:
def do_another_thing(se)
se.anotherthing do |element|
end
end