婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Ruby類實例變量、類實例方法和類變量、類方法的區別

Ruby類實例變量、類實例方法和類變量、類方法的區別

熱門標簽:地圖標注大廈 個人怎么在地圖標注需要的店鋪 武漢外呼防封系統多少錢 百度地圖標注早餐區域 新岸線智能電銷機器人 怎么去除地圖標注 漳州智云呼電話機器人 清朝地圖標注哈爾濱 冀州市地圖標注

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

復制代碼 代碼如下:

class A 
   #類變量在訪問前必須賦值,否則會有"uninitialized class variable“ 錯誤 
  @@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 BA   
end 
 
#初始的數據 
A.look 
B.look 
 
#修改父類中的類變量 
A.alpha=111 
A.look 
B.look 
 
 
運行結果: 
復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

class A 
   #類的類實例變量在訪問前可以賦值也可以不賦值,不賦值就是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 BA   
end 
 
A.look 
B.look 

代碼的運行結果如下:
復制代碼 代碼如下:

123, 456, 789
, ,
nil

您可能感興趣的文章:
  • 詳解Ruby中的單件方法和單件類
  • Ruby面向對象編程中類與方法的基礎學習
  • Ruby中的Proc類及Proc的類方法Proc.new的使用解析
  • Ruby面向對象編程中類的方法與類的擴展

標簽:濰坊 儋州 金昌 德宏 宣城 天門 臺灣 天門

巨人網絡通訊聲明:本文標題《Ruby類實例變量、類實例方法和類變量、類方法的區別》,本文關鍵詞  Ruby,類,實例,變量,方法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby類實例變量、類實例方法和類變量、類方法的區別》相關的同類信息!
  • 本頁收集關于Ruby類實例變量、類實例方法和類變量、類方法的區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 维西| 衢州市| 清镇市| 东源县| 平顶山市| 崇信县| 内丘县| 砚山县| 怀化市| 丹寨县| 沛县| 治多县| 荥阳市| 长葛市| 汶川县| 南华县| 五家渠市| 彰武县| 松原市| 贵溪市| 宁城县| 乌拉特中旗| 弋阳县| 大关县| 永善县| 定南县| 米易县| 江阴市| 中山市| 门源| 平泉县| 泉州市| 麦盖提县| 定州市| 金门县| 鄱阳县| 隆林| 铁力市| 侯马市| 广丰县| 凤城市|