我制作了一个类似 DSL 的小程序,用于将饮料添加到数组中。这是使用instance_eval
和&block
创建快速程序的一个非常基本的示例。
这是程序:
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
. 这可能吗?谢谢。