如果我取消定义类上的所有实例方法,则会收到以下警告:
warning: undefining `object_id' may cause serious problems
warning: undefining `__send__' may cause serious problems
这可能会导致哪些“严重问题”示例?
(特别是,我也很好奇这是否对垃圾收集有任何影响?)
如果我取消定义类上的所有实例方法,则会收到以下警告:
warning: undefining `object_id' may cause serious problems
warning: undefining `__send__' may cause serious problems
这可能会导致哪些“严重问题”示例?
(特别是,我也很好奇这是否对垃圾收集有任何影响?)
简而言之,这些方法用于元目的(例如错误报告)以及普通目的,因此它们比其他方法更重要。
当出现问题时,Ruby 会返回错误消息和回溯。默认情况下,错误消息会显示对违规对象的检查。除了一些特殊的类,例如String
and Numeric
,检查会显示对象 id。为了正确显示错误消息,object_id
定义是必不可少的。如果未定义,则错误显示例程本身会引发错误,需要显示该错误,从而导致无法报告的无限循环。在这种情况下,您无法判断出了什么问题。这很严重。
也许对于__send__
. 它是send
大多数类的基础方法,对于向对象发送指令至关重要。