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