最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ruby類實(shí)例變量、類實(shí)例方法和類變量、類方法的區(qū)別

 更新時(shí)間:2015年04月29日 09:28:55   投稿:junjie  
這篇文章主要介紹了Ruby類實(shí)例變量、類實(shí)例方法和類變量、類方法的區(qū)別,本文探討一下他們的定義和基本的使用場景,需要的朋友可以參考下

在Ruby中類實(shí)例變量、類實(shí)例方法和類變量、類方法的區(qū)別比較微妙,而且用法也有相當(dāng)?shù)膮^(qū)別。本文探討一下他們的定義和基本的使用場景,以拋磚引玉...
 
一.類實(shí)例變量和類變量
 
類變量大家都很熟悉了,就是在類定義中用@@開頭的變量。類變量是用于存儲類的全局信息,它只屬于類,不同與類實(shí)例變量(即用@開頭定義的變量)每一個(gè)類的對象都有一份數(shù)據(jù)。 類變量是可以被繼承的,也就是說如果我們派生一個(gè)子類,那么在子類中是可以訪問父類的類變量的。子類和父類共享一份數(shù)據(jù),對一個(gè)類的修改會反映到另一個(gè)類中。如下邊的代碼運(yùn)行結(jié)果顯示:

復(fù)制代碼 代碼如下:

class A 
   #類變量在訪問前必須賦值,否則會有"uninitialized class variable“ 錯(cuò)誤 
  @@alpha=123                # Initialize @@alpha 
  @@beta=456                 #Initialize @@beta 
  @@gamma=789              #Initialize @@gamma 
  
  def A.alpha 
    @@alpha 
  end  
  
  def A.alpha=(x) 
    @@alpha=x 
  end 
  
  def A.beta 
    @@beta 
  end 
  
  def A.beta=(x) 
     @@beta=x 
  end  
   
  def A.gamma 
   @@gamma 
  end 
  
  def A.gamma=(x) 
    @@gamma=x 
  end  
  def A.look 
    puts "#@@alpha, #@@beta, #@@gamma" 
  end 
  end 
 
 
class B<A   
end 
 
#初始的數(shù)據(jù) 
A.look 
B.look 
 
#修改父類中的類變量 
A.alpha=111 
A.look 
B.look 
 
 
運(yùn)行結(jié)果: 
復(fù)制代碼 代碼如下:

123, 456, 789 
123, 456, 789 
111, 456, 789 
111, 456, 789 

那么什么是類的類實(shí)例變量呢?類的類實(shí)例變量是在類的類方法中或方法外邊(不能在實(shí)例方法中,那是類的實(shí)例變量)以@開頭定義的變量,這樣定義的變量值屬于類對象本身,不能夠被子類繼承。類對象這個(gè)說法可能有些讓人疑惑,其實(shí)Ruby中的一起都是對象,我們定義的類和Ruby的內(nèi)置類本身就是元類的對象。因此如果要定義需要和子類共享的類全局?jǐn)?shù)據(jù),使用類變量;但是如果要定義僅供類本身使用的類全局?jǐn)?shù)據(jù)可以使用類實(shí)例變量。還有一點(diǎn)需要注意的是,和類變量不同的是類實(shí)例變量不要求訪問前必須賦值,不賦值它的值就是nil 。我們還是看一個(gè)例子,能夠更清楚一點(diǎn)...
 

復(fù)制代碼 代碼如下:

class A 
   #類的類實(shí)例變量在訪問前可以賦值也可以不賦值,不賦值就是nil 
  @alpha=123              # Initialize @alpha 
  @beta=456                #Initialize @beta 
  @gamma=789             #Initialize @gamma 
  
  def A.alpha 
    @alpha 
  end  
  
  def A.alpha=(x) 
    @alpha=x 
  end 
  
  def A.beta 
    @beta 
  end 
  
  def A.beta=(x) 
     @beta=x 
  end  
   
  def A.gamma 
   @gamma 
  end 
  
  def A.gamma=(x) 
    @gamma=x 
  end  
  def A.look 
    puts "#@alpha, #@beta, #@gamma" 
  end 
  end 
 
 
class B<A   
end 
 
A.look 
B.look 

代碼的運(yùn)行結(jié)果如下:
復(fù)制代碼 代碼如下:

123, 456, 789
, ,
nil

相關(guān)文章

  • Lua中的迭代器(iterator)淺析

    Lua中的迭代器(iterator)淺析

    這篇文章主要介紹了Lua中的迭代器(iterator)淺析,本文講解了pairs迭代器和、ipairs迭代器,同時(shí)提及了io.lines、string.gmatch、迭代器與Closure(閉包)等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • 簡單講解Lua中的垃圾回收機(jī)制

    簡單講解Lua中的垃圾回收機(jī)制

    這篇文章主要介紹了Lua中的垃圾回收機(jī)制,自動(dòng)的垃圾回收是Lua的重要特性之一,需要的朋友可以參考下
    2015-05-05
  • Lua之字符串格式化例子和常用格式化參數(shù)介紹

    Lua之字符串格式化例子和常用格式化參數(shù)介紹

    這篇文章主要介紹了Lua之字符串格式化例子和常用格式化參數(shù)介紹,本文著重講解了格式化參數(shù)的作用,需要的朋友可以參考下
    2015-04-04
  • Lua中pairs與ipairs的區(qū)別總結(jié)

    Lua中pairs與ipairs的區(qū)別總結(jié)

    這篇文章主要給大家介紹了關(guān)于Lua中pairs與ipairs區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Lua編程示例(八):生產(chǎn)者-消費(fèi)者問題

    Lua編程示例(八):生產(chǎn)者-消費(fèi)者問題

    這篇文章主要介紹了Lua編程示例(八):生產(chǎn)者-消費(fèi)者問題,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-07-07
  • Lua中的數(shù)學(xué)庫總結(jié)

    Lua中的數(shù)學(xué)庫總結(jié)

    這篇文章主要介紹了Lua中的數(shù)學(xué)庫總結(jié),本文羅列了Lua5.1中數(shù)學(xué)庫的所有函數(shù),需要的朋友可以參考下
    2014-11-11
  • Lua編程中的一些基本語法整理

    Lua編程中的一些基本語法整理

    這篇文章主要介紹了Lua編程中的一些基本語法整理的相關(guān)資料,是Lua入門中最基礎(chǔ)的知識,需要的朋友可以參考下
    2015-05-05
  • Lua中的table學(xué)習(xí)筆記

    Lua中的table學(xué)習(xí)筆記

    這篇文章主要介紹了Lua中的table學(xué)習(xí)筆記,本文講解了table.concat、table.insert、table.maxn、table.pack、 table.remove、table.sort等方法的使用,需要的朋友可以參考下
    2014-12-12
  • Lua所有內(nèi)置函數(shù)羅列

    Lua所有內(nèi)置函數(shù)羅列

    這篇文章主要介紹了Lua所有內(nèi)置函數(shù)羅列,本文匯集了Lua腳本語言的所有內(nèi)置函數(shù),需要的朋友可以參考下
    2015-04-04
  • Lua中的string庫(字符串函數(shù)庫)總結(jié)

    Lua中的string庫(字符串函數(shù)庫)總結(jié)

    這篇文章主要介紹了Lua中的string庫(字符串函數(shù)庫)總結(jié),本文講解了string庫的操作方法,著重講解了string.format方法,需要的朋友可以參考下
    2014-11-11

最新評論

那坡县| 蛟河市| 壶关县| 南靖县| 怀安县| 正定县| 黄浦区| 康保县| 永昌县| 台南县| 江城| 宁陕县| 台江县| 江口县| 独山县| 寿宁县| 吉木萨尔县| 日照市| 竹北市| 千阳县| 津市市| 克什克腾旗| 仁布县| 黄骅市| 西华县| 两当县| 上饶县| 镇康县| 北票市| 荆州市| 志丹县| 九江县| 威信县| 寻甸| 徐汇区| 汕头市| 思茅市| 西青区| 通州市| 菏泽市| 安乡县|