4

如果我取消定义类上的所有实例方法,则会收到以下警告:

warning: undefining `object_id' may cause serious problems
warning: undefining `__send__' may cause serious problems

这可能会导致哪些“严重问题”示例?

(特别是,我也很好奇这是否对垃圾收集有任何影响?)

4

1 回答 1

4

简而言之,这些方法用于元目的(例如错误报告)以及普通目的,因此它们比其他方法更重要。

当出现问题时,Ruby 会返回错误消息和回溯。默认情况下,错误消息会显示对违规对象的检查。除了一些特殊的类,例如Stringand Numeric,检查会显示对象 id。为了正确显示错误消息,object_id定义是必不可少的。如果未定义,则错误显示例程本身会引发错误,需要显示该错误,从而导致无法报告的无限循环。在这种情况下,您无法判断出了什么问题。这很严重。

也许对于__send__. 它是send大多数类的基础方法,对于向对象发送指令至关重要。

于 2013-07-22T15:32:37.250 回答