Ruby的使用方法有什么作用?

时间:2013-11-26 15:02:27

标签: ruby using

元编程Ruby第3章的任务是编写一个Ruby等价的C#的using statement。我开始了:

class Resource
  def dispose
    @disposed = true
  end
  def disposed?
    @disposed
  end
end
def using(r)
  puts "Not implemented."
end

r = Resource.new
using(r)

我还没有实现using。然而,当我运行此代码时,我得到了

in `using': wrong argument type Resource (expected Module) (TypeError)

此外,如果我写了类似using(Kernel)using(Enumerable)等的内容,程序会毫无错误地完成。据我所知,Ruby中没有using方法或关键字,但我在pry和irb中也有相同的行为。发生了什么事?

2 个答案:

答案 0 :(得分:1)

评论中指出不应该有using方法。尝试运行method(:using).owner,看看您是否获得了更多信息。 irb的预期结果是

"NameError: undefined method `using' for class `Object'"

但你应该得到你的使用来源。

答案 1 :(得分:1)

如果你想在Ruby 2.1中这样做,你需要修补main对象,因为它已经有了评论中提到的方法:

self.instance_eval do
  def using(r)
    puts "Not implemented."
  end
end