如果我的课程Object1
包含方法method1
和"全球" method2
模块中的Kernel
。
method1
通过将其转换为proc来运行块,然后调用它。
如果我有类似的东西:
obj1 = new Object1
obj1.method1(arg1,arg2){ method2() }
method2
是否可以知道obj1
称为阻止?
答案 0 :(得分:1)
假设您希望method2成为全局方法。通过传递绑定,您可以获得对调用对象的访问权限。但更简单的方法就是将调用者对象传递给它:
示例:强>
def method2(o)
#puts this.object_id
puts "Inside method2()"
puts "#{o.object_id}"
end
class Object1
def method1
method2(self)
end
end
obj1 = Object1.new
puts obj1.object_id
obj1.method1()
<强>输出:强>
23644040
Inside method2()
23644040