Ruby 中局部变量、实例变量、类变量和全局变量的区别是什么?

· 约 3 分钟读完 · 第 10 / 199 章

推荐答案

在 Ruby 中,局部变量、实例变量、类变量和全局变量的区别主要体现在作用域和生命周期上:

  • 局部变量:以 小写字母 或 _ 开头,作用域限定在定义它的块、方法或类中。局部变量在块、方法或类结束后会被销毁。
  • 实例变量:以 @ 开头,作用域限定在类的实例中。每个实例都有自己独立的实例变量,实例变量的生命周期与实例的生命周期一致。
  • 类变量:以 @@ 开头,作用域限定在类及其子类中。类变量在类的所有实例之间共享,生命周期与类的生命周期一致。
  • 全局变量:以 $ 开头,作用域是整个程序。全局变量在程序的任何地方都可以访问,生命周期与程序的生命周期一致。

本题详细解读

局部变量

局部变量是最常见的变量类型,通常用于存储临时数据。它们的作用域非常有限,只能在定义它们的块、方法或类中访问。一旦超出作用域,局部变量就会被销毁。

实例变量

实例变量属于类的实例,每个实例都有自己独立的实例变量。实例变量在类的任何方法中都可以访问,并且它们的生命周期与实例的生命周期一致。

类变量

类变量在类的所有实例之间共享,并且可以在类的任何方法中访问。类变量的生命周期与类的生命周期一致,即使类的实例被销毁,类变量仍然存在。

全局变量

全局变量可以在程序的任何地方访问,无论它们在何处定义。全局变量的生命周期与程序的生命周期一致,因此它们在整个程序运行期间都有效。

总结

  • 局部变量:作用域最小,生命周期最短。
  • 实例变量:作用域限定在类的实例中,生命周期与实例一致。
  • 类变量:作用域限定在类及其子类中,生命周期与类一致。
  • 全局变量:作用域最大,生命周期最长。