使用实例评估实现

许多语言都有一个 with 语句,允许程序员省略方法调用的接收者。

with 可以使用 instance_eval 在 Ruby 中轻松模拟 :

def with(object, &block)
  object.instance_eval &block
end

with 方法可用于在对象上无缝执行方法:

hash = Hash.new

with hash do
  store :key, :value
  has_key? :key       # => true
  values              # => [:value]
end