为什么在Ruby中未初始化的实例变量返回nil,但是未初始化的类变量引发错误?

enocom

在Ruby中,为什么未初始化的实例变量返回nil而未初始化的类变量引发了NameError

相比:

@some_uninitialized_variable # => nil

和:

@@some_uninitialized_class_variable # => NameError
卡里·斯沃夫兰

我的看法如下:

  • 未初始化的局部变量返回名称错误,因为Ruby不知道它是要用作局部变量还是不存在的方法。

  • 如果nil未定义的类变量在未定义时返回,则在nil由远祖先为变量实际赋值时可能导致讨厌的错误也就是说,我认为这是在保护编码器。

  • nil如果经常使用的功能,则实例化变量默认为未初始化时@a = @a || []

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 C 中,变量的多次初始化不会引发错误。为什么?

为什么我收到“未初始化的变量”错误

Java中未初始化的类成员不会发出任何编译器错误。但是局部变量可以。为什么?

Java未初始化的变量错误

BannerAd 变量未初始化错误

变量未初始化

为什么Javac抱怨未初始化变量?

为什么未初始化的constexpr变量不是常量?

为什么GCC不报告未初始化的变量?

PHP中的未初始化变量

在函数中未初始化的变量

C ++对类中的未初始化变量启用警告

Ruby类中的未初始化常量错误

为什么未初始化的变量包含垃圾而不是'nil'?

如何忽略MSVC中未初始化的变量错误

在TensorFlow中,有什么方法可以初始化未初始化的变量?

C ++类实例未初始化但没有编译错误,为什么

为什么未初始化模板类的嵌入式静态变量?

未初始化的变量已被初始化

为什么尝试打印未初始化的变量并不总是导致错误消息

为什么未初始化的指针变量作为字符串会导致错误?

尝试使i = i * i时,为什么出现错误“使用未初始化的内存'i'”和“使用了未初始化的局部变量'i'”的错误

关于类构造函数中未初始化变量的 TypeScript 错误

为什么不能在类中初始化实例变量?

未初始化的原始实例变量是否使用内存?

ios未初始化实例变量的swift init

为什么在此BEGIN中未正确初始化变量?

使用未初始化的变量警告

使用未初始化的变量