ruby – instance_eval和class << self之间的区别?
我似乎无法掌握这两个“结构”之间的确切差异.在我看来,以下小脚本应该输出相同的东西三次:
class Example puts self class << self puts self end instance_eval do puts self end end 但是,输出是: Example #<Class:Example> Example 这是我的理由: >示例是Class的一个实例,所以类body中的self指的是; 我目前的猜测是该等级<< self在Example和Class之间插入一个ghost类,并将self设置为,但是#< Class:Example>的输出.根本没有确认. 那么我的理由是什么问题? 解决方法
不,类<< obj打开了obj的单例类.正如你正确指出的那样,在类声明中,self指的是类本身,在这种情况下,“inner”self(即传递给puts的那个)引用Example的singleton类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |