元编程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中也有相同的行为。发生了什么事?
答案 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