Ruby有三类变量,一种常量和两种严格意义上的伪变量(pseudo-variables).变量和常量都没有类型.虽然无类型变量存在一定的缺点,但却有更多的优点并很好的符合Ruby快速简便(quick and easy)的哲学精神.
在大多数语言里,变量都必须指定其类型,可更改性(是不是个常数)和范围;由于类型的不存在,剩下的东西也可由变量名字很快确定(你马上会看见),在Ruby里我们不需要变量声明.
由首字母标识符将其分类:
$ 全局变量
@ 实变量
[a-z] 局部变量
[A-Z] 常量
唯一的例外是Ruby的伪变量:self,它永远指向当前正执行着的对象或未初始化变量的空值(meaningless value)nil.虽然这两者的命名都像是局部变量,但 self 却是个由解释器把持的全局变量,而 nil 实际上是个常量.既然只有这两种意外,他们并不会过多的干扰我们.
你并能向 self 或 nil 赋值.下面的例子中, main作为 self 的值,指向最高层的对象:
ruby> self
main
ruby> nil
nil