Доступ к текущему массиву внутри метода 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
Другие вопросы по тегам