Ruby:類中的變量

Ruby提供了四種變量,分別是局部變量仆邓、實例變量鲜滩、類變量、全局變量节值。

一徙硅、命名方式

局部變量:小寫字母或者“_”開頭,如user或者_(dá)user搞疗,解釋器解釋到時才開始在內(nèi)存中存在嗓蘑,在進(jìn)行變量定義時用nil進(jìn)行賦值初始化;
實例變量:以@開頭匿乃,如@user嗓奢,默認(rèn)初始化為nil蚀狰,此處的“實例”指的是類對象本身借卧,或者類的對象壁却;
類變量:以@@開頭,如@@user阳懂,需要進(jìn)行初始化后才能調(diào)用梅尤;
全局變量:以$開頭,如$user岩调,默認(rèn)初始化為nil巷燥;

二、作用范圍

局部變量:如user号枕,只作用于本類缰揪、本方法或本模塊內(nèi)。Ruby中的局部變量葱淳,類中定義的钝腺,只能在類中訪問,其子類赞厕、方法艳狐、內(nèi)部類中都無法調(diào)用,如下邊示例代碼

class Account  
    user=User.new  
    def myMethod  
        puts user.name   #調(diào)用發(fā)生錯誤皿桑,user未定義  user的作用域不在此
    end  
end  

實例變量:如@user毫目,作用于本實例對象范圍內(nèi)或本類的實例對象范圍內(nèi)蔬啡,在類定義內(nèi)對實例變量的賦值和讀取沒有限制;在類外訪問實例變量時镀虐,則可以通過方法來訪問箱蟆。
比如user,是User類的一個對象刮便,user.new是User類的一個實例對象空猜,這是兩個相互獨(dú)立的域,定義在Account中的變量不能在Account.new中訪問恨旱,反之亦然辈毯,如下邊示例代碼

class A    
  #類的類實例變量在訪問前可以賦值也可以不賦值,不賦值就是nil    
  @alpha='This is @alpha\' value!'   
    
  def A.look  
    puts "#@alpha"    
  end  
  def look    
    puts "#@alpha"    
  end  
end    
  
A.look        #輸出:'This is @alpha' value!''  
A.new.look    #輸出:''

類變量:如@@user窖杀,作用于類的所有范圍,所有實例對象共享裙士,包括子類及其實例對象入客,類變量通過Protected聲明的,如下邊示例代碼


class A    
  #類的類實例變量在訪問前可以賦值也可以不賦值腿椎,不賦值就是nil    
  @@alpha='This is @alpha\' value!'   
  
  def A.look  
    puts "#@@alpha"    
  end  
  def look   
    puts "#@@alpha"    
  end  
  def look_again    
    puts "#@@alpha"    
  end  
end    
  
class B<A  
end  
  
A.look        #輸出:'This is @alpha' value!'  
B.look        #輸出:'This is @alpha' value!'  
a=A.new  
a.look        #輸出:'This is @alpha' value!'  
a.look_again  #輸出:'This is @alpha' value!'  
b=B.new  
b.look        #輸出:'This is @alpha' value!'  
b.look_again  #輸出:'This is @alpha' value!'  

全局變量:如$user桌硫,盡量少使用 ,作用于整個程序的生命周期啃炸,常駐內(nèi)存铆隘,過量使用會引起性能下降,內(nèi)存溢出南用,Ruby內(nèi)置一些全局變量膀钠,獲取相關(guān)數(shù)據(jù)十分方便,如$0’代表的是所運(yùn)行應(yīng)用程序的文件名稱裹虫,‘$:’代表的是默認(rèn)的文件搜索路徑;'$$'代表的是 ruby 程序的進(jìn)程 id

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肿嘲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子筑公,更是在濱河造成了極大的恐慌雳窟,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匣屡,死亡現(xiàn)場離奇詭異封救,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)捣作,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門誉结,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人券躁,你說我怎么就攤上這事搓彻∪绯瘢” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵旭贬,是天一觀的道長怔接。 經(jīng)常有香客問我,道長稀轨,這世上最難降的妖魔是什么扼脐? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮奋刽,結(jié)果婚禮上瓦侮,老公的妹妹穿的比我還像新娘。我一直安慰自己佣谐,他們只是感情好肚吏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著狭魂,像睡著了一般罚攀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雌澄,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天斋泄,我揣著相機(jī)與錄音,去河邊找鬼镐牺。 笑死炫掐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的睬涧。 我是一名探鬼主播募胃,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畦浓!你這毒婦竟也來了摔认?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宅粥,失蹤者是張志新(化名)和其女友劉穎参袱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秽梅,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抹蚀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了企垦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片环壤。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖钞诡,靈堂內(nèi)的尸體忽然破棺而出郑现,到底是詐尸還是另有隱情湃崩,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布接箫,位于F島的核電站攒读,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辛友。R本人自食惡果不足惜薄扁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望废累。 院中可真熱鬧邓梅,春花似錦、人聲如沸邑滨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掖看。三九已至匣距,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乙各,已是汗流浹背墨礁。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工幢竹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耳峦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓焕毫,卻偏偏與公主長得像蹲坷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子邑飒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法循签,類相關(guān)的語法,內(nèi)部類的語法疙咸,繼承相關(guān)的語法县匠,異常的語法,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 蘋果官方文檔翻譯 《Objective-C語言編程》(Programming with Objective-C) ...
    fever105閱讀 25,681評論 19 130
  • (一)Java部分 1撒轮、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,104評論 0 62
  • 物是人非 一張張既熟悉乞旦,又稍顯陌生感的臉一一呈現(xiàn),黝黑的皮膚题山,此起彼伏的喝酒喧鬧聲兰粉,夾雜著方言的祝酒詞。 是的顶瞳,我...
    書眠閱讀 183評論 0 0
  • 初看射雕玖姑,總覺瑛姑其人最是可笑愕秫。研習(xí)奇門五行十余年,不及黃蓉小小年紀(jì)精通歷數(shù)之術(shù)焰络,可笑戴甩。日夜苦思九宮之法,不知早有...
    十言九不語閱讀 693評論 5 3