解析 ruby 全局變量
更新時間:2007年11月24日 14:18:34 作者:
全局變量由$開頭.它們可以在程序的任何位置訪問到.在初始化前,全局變量有一個特殊的值 nil.
ruby> $foo
nil
ruby> $foo = 5
5
ruby> $foo
5
應(yīng)謹慎使用全局變量.由于在任何地方都可以被寫因此他們相當(dāng)危險.濫用全局變量會導(dǎo)致很難隔離臭蟲;同時也視為程序的設(shè)計未經(jīng)嚴格考慮.當(dāng)你發(fā)現(xiàn)必須要使用全局變量時,記得給它一個不會在其它地方一不小心就用到的描述性名字(像上面那樣叫$foo可能不是一個好想法).
全局變量的好處是其可以被跟蹤;你可以做一個當(dāng)變量值改變時被調(diào)用的過程.
ruby> trace_var :$x, proc{print "$x is now ", $x, "\n"}
nil
ruby> $x = 5
$x is now 5
5
當(dāng)一個全局變量(改變時)作為一個過程的激發(fā)器,我們也管它叫活動變量(active variable).比如說,它可用于保持GUI顯示的更新.
這里列出了一些以$打頭并跟單個字符的特殊變量.比如,$$包含了Ruby解釋器的進程id,它是只讀的.這里是主要的系統(tǒng)變量以及它們的含義(細節(jié)可在Ruby的參考手冊中查到):
$! 最近一次的錯誤信息
$@ 錯誤產(chǎn)生的位置
$_ gets最近讀的字符串
$. 解釋器最近讀的行數(shù)(line number)
$& 最近一次與正則表達式匹配的字符串
$~ 作為子表達式組的最近一次匹配
$n 最近匹配的第n個子表達式(和$~[n]一樣)
$= 是否區(qū)別大小寫的標志
$/ 輸入記錄分隔符
$\ 輸出記錄分隔符
$0 Ruby腳本的文件名
$* 命令行參數(shù)
$$ 解釋器進程ID
$? 最近一次執(zhí)行的子進程退出狀態(tài)
上面的 $_ 和 $~ 都有作用范圍.它們的名字暗示其為全局的,但它們一般都是這樣用的,關(guān)于它們的命名有歷史上的原因.
ruby> $foo
nil
ruby> $foo = 5
5
ruby> $foo
5
應(yīng)謹慎使用全局變量.由于在任何地方都可以被寫因此他們相當(dāng)危險.濫用全局變量會導(dǎo)致很難隔離臭蟲;同時也視為程序的設(shè)計未經(jīng)嚴格考慮.當(dāng)你發(fā)現(xiàn)必須要使用全局變量時,記得給它一個不會在其它地方一不小心就用到的描述性名字(像上面那樣叫$foo可能不是一個好想法).
全局變量的好處是其可以被跟蹤;你可以做一個當(dāng)變量值改變時被調(diào)用的過程.
ruby> trace_var :$x, proc{print "$x is now ", $x, "\n"}
nil
ruby> $x = 5
$x is now 5
5
當(dāng)一個全局變量(改變時)作為一個過程的激發(fā)器,我們也管它叫活動變量(active variable).比如說,它可用于保持GUI顯示的更新.
這里列出了一些以$打頭并跟單個字符的特殊變量.比如,$$包含了Ruby解釋器的進程id,它是只讀的.這里是主要的系統(tǒng)變量以及它們的含義(細節(jié)可在Ruby的參考手冊中查到):
$! 最近一次的錯誤信息
$@ 錯誤產(chǎn)生的位置
$_ gets最近讀的字符串
$. 解釋器最近讀的行數(shù)(line number)
$& 最近一次與正則表達式匹配的字符串
$~ 作為子表達式組的最近一次匹配
$n 最近匹配的第n個子表達式(和$~[n]一樣)
$= 是否區(qū)別大小寫的標志
$/ 輸入記錄分隔符
$\ 輸出記錄分隔符
$0 Ruby腳本的文件名
$* 命令行參數(shù)
$$ 解釋器進程ID
$? 最近一次執(zhí)行的子進程退出狀態(tài)
上面的 $_ 和 $~ 都有作用范圍.它們的名字暗示其為全局的,但它們一般都是這樣用的,關(guān)于它們的命名有歷史上的原因.
相關(guān)文章
Ruby使用Monkey Patch猴子補丁方式進行程序開發(fā)的示例
Monkey Patch猴子補丁是指在程序解釋運行時動態(tài)添加類或模塊的做法,這里我們就來看一下Ruby使用Monkey Patch猴子補丁方式進行程序開發(fā)的示例2016-05-05
Ruby中Hash哈希結(jié)構(gòu)的基本操作方法小結(jié)
Hash是一種鍵值對應(yīng)的數(shù)據(jù)結(jié)構(gòu),Ruby中直接帶有Hash類來對其提供支持,這里我們整理了Ruby中Hash哈希結(jié)構(gòu)的基本操作方法小結(jié),首先來回顧一下Hash的基本知識:2016-06-06
Ruby中創(chuàng)建字符串的一些技巧小結(jié)
這篇文章主要介紹了Ruby中創(chuàng)建字符串的一些技巧小結(jié),本文用先講解技巧然后給出代碼示例的方式列出了多種Ruby創(chuàng)建字符串方法,需要的朋友可以參考下2015-01-01

