Существует распространенная идиома использования замен, например:
def with clazz, &block
yield clazz
clazz
end
with Hash.new |hash|
hash.merge!{:a => 1}
end
Есть ли способ пойти дальше и определить #with, чтобы иметь возможность делать:
with Hash.new |hash|
merge!{:a => 1}
end
или даже:
with Hash.new do
merge!{:a => 1}
end
?
ОБНОВЛЕНИЕ
Позже случайно я нашел именно то, что искал (решение, подобное принятому): http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/19153
ОБНОВЛЕНИЕ 2
Он был добавлен в сахар-высокий / dsl в https://github.com/kristianmandrup/sugar-high
ОБНОВЛЕНИЕ 3
Проект docille на Github очень хорошо использует эту идею.