为什么某些变量未初始化会导致错误,而其他变量会引发警告?

时间:2011-08-01 00:17:20

标签: ruby language-design

博客文章Uninitialized variables指出未初始化的类变量,局部变量和常量会导致异常(在经过method_missing或其等价物之后),而未初始化的全局变量和实例变量仅导致警告

是否存在导致异常的逻辑,并且仅导致警告?

1 个答案:

答案 0 :(得分:2)

我的猜测是,当它们可能在元编程中有用时会提供异常。如果发现缺少全局变量或实例变量,您可以轻松地实例化它 - 我经常看到这样的习语:

@var ||= 'default_value'

不需要任何花哨的东西。

对于类,其他常量和方法,检查它们是否已定义并使用内联更为尴尬。异常(以及const_missingmethod_missing等相关方法提供了处理它们缺席的钩子。例如,我相信Rails使用const_missing在运行时加载类。