Ruby变量

2025年3月17日 | 阅读 3 分钟

Ruby 变量是用于保存程序中使用的数据的位置。每个变量都有一个不同的名称。这些变量名基于一些命名约定。与其他编程语言不同,Ruby 不需要声明变量。需要一个前缀来指示它。

Ruby 中有四种类型的变量

  • 局部变量
  • 类变量
  • 实例变量
  • 全局变量
Ruby Variables

局部变量

局部变量名以小写字母或下划线 (_) 开头。它只能在其初始化块内访问或具有其作用域。代码块完成后,变量没有作用域。

当调用未初始化的局部变量时,它们被解释为调用没有参数的方法。


类变量

类变量名以 @@ 符号开头。它们需要在使用前初始化。类变量属于整个类,可以从类内部的任何位置访问。如果在某个实例中更改了该值,则每个实例中的该值都将更改。

类变量由该类的所有后代共享。未初始化的类变量将导致错误。

示例

在上面的例子中,@@no_of_states 是一个类变量。

输出

Ruby variables 1

实例变量

实例变量名以 @ 符号开头。它属于该类的一个实例,并且可以从方法中该类的任何实例访问。它们对类的特定实例的访问权限有限。

它们不需要初始化。未初始化的实例变量将具有 nil 值。

示例

在上面的例子中,@states_name 是实例变量。

输出

Ruby variables 2

全局变量

全局变量名以 $ 符号开头。它的作用域是全局的,这意味着它可以从程序中的任何位置访问。

未初始化的全局变量将具有 nil 值。建议不要使用它们,因为它们会使程序变得晦涩难懂且复杂。

Ruby 中有许多预定义的全局变量。

示例

在上面的例子中,@states_name 是实例变量。

输出

Ruby variables 3

总结

局部全球实例Class
范围限制在初始化块内。它的作用域是全局的。它属于一个类的实例。限制在创建它们的整个类中。
命名以小写字母或下划线 (_) 开头。以 $ 符号开头。以 @ 符号开头。以 @@ 符号开头。
初始化无需初始化。未初始化的局部变量被解释为没有参数的方法。无需初始化。未初始化的全局变量将具有 nil 值。无需初始化。未初始化的实例变量将具有 nil 值。它们需要在使用前初始化。未初始化的全局变量会导致错误。
下一个主题Ruby 数据类型