我从这个问题中理解,在实例方法中,self引用了类的当前实例.无论您在实例方法定义中有多少层方法或循环,这都是真的吗?
通常,是的,虽然有一些元编程方法可以用self做一些奇怪的事情 - 例如,Object#instance_eval允许你传递一个块来在另一个实例的上下文中进行评估.在这种情况下,块中的self是另一个实例的self,如下所示:
class Foo
end
class Bar
def wacky
puts self.class #"Bar"
Foo.new.instance_eval do
puts self.class #"Foo"
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果没有仔细阅读,您可能会认为self块内的内容是指Bar实例,但事实并非如此.
所以你看,在大多数情况下,你可以假设自我是进入方法时受约束的自我.虽然你有能力传递块来获得不同的绑定,self但不会在Ruby中"偶然"重新绑定.有关更有趣的阅读,您可以查看ruby Binding类的文档.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |