在 Ruby 中,变量的作用域分为 全局作用域、类作用域、实例作用域、局部作用域 和 块作用域。变量的生命周期与其作用域相关。
全局作用域:全局作用域中的变量使用 $
开头,可以在程序的任何地方访问,直到程序结束才被销毁。
类作用域:类作用域中的变量使用 @@
开头,可以在类的任何方法中访问,直到程序结束或类被重载时才被销毁。
实例作用域:实例作用域中的变量使用 @
开头,可以在实例的任何方法中访问,直到实例被销毁时才被销毁。
局部作用域:局部作用域中的变量使用小写字母或下划线开头,只能在定义它的方法内部访问,当方法执行完毕时被销毁。
块作用域:块作用域中的变量使用 {}
或 do/end
括起来,只能在块内部访问,当块执行完毕时被销毁。在 Ruby 1.9 之后,块作用域中的变量可以使用 |var|
语法来定义,这样变量的作用域仅限于块内部。
在 Ruby 中,变量的生命周期与垃圾回收机制相关。当变量的引用计数为 0 时,即没有任何对象引用该变量时,该变量将被垃圾回收机制回收。
除了上述作用域外,Ruby 还支持常量作用域,常量使用大写字母开头,可以在程序的任何地方访问,但不能被重新赋值。