Я сделал небольшую DSL-программу для добавления напитков в массив. Это довольно простой пример использования instance_eval
и &block
для создания быстрой программы.Создание блока Ruby возвращает массив?
Вот программа:
class Drinks
def initialize(&block) # Initialize drinks
@drinks = []
instance_eval &block
end
def drink(d)
@drinks << d
end # Add drink
def all_drinks
puts @drinks
end
end
add_drinks = Drinks.new do
drink "water"
drink "soda"
drink "juice"
end
add_drinks.all_drinks
План должен сделать сам add_drinks
автоматического возврата, так что вы не должны использовать add_drinks.all_drinks
. Возможно ли это? Благодарю.
«авто-возврат себя»? Но это не то, что вы хотите, вам нужен массив? –