欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

class A 
   #類變量在訪問(wèn)前必須賦值,否則會(huì)有"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í)例變量)以@開頭定義的變量,這樣定義的變量值屬于類對(duì)象本身,不能夠被子類繼承。類對(duì)象這個(gè)說(shuō)法可能有些讓人疑惑,其實(shí)Ruby中的一起都是對(duì)象,我們定義的類和Ruby的內(nèi)置類本身就是元類的對(duì)象。因此如果要定義需要和子類共享的類全局?jǐn)?shù)據(jù),使用類變量;但是如果要定義僅供類本身使用的類全局?jǐn)?shù)據(jù)可以使用類實(shí)例變量。還有一點(diǎn)需要注意的是,和類變量不同的是類實(shí)例變量不要求訪問(wèn)前必須賦值,不賦值它的值就是nil 。我們還是看一個(gè)例子,能夠更清楚一點(diǎn)...
 

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

class A 
   #類的類實(shí)例變量在訪問(wèn)前可以賦值也可以不賦值,不賦值就是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腳本語(yǔ)言快速入門教程

    lua腳本語(yǔ)言快速入門教程

    這篇文章主要介紹了lua腳本語(yǔ)言快速入門教程,本文講解了變量及常量、字符串、邏輯控制語(yǔ)句、循環(huán)結(jié)構(gòu)、函數(shù)及其使用等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Lua和Nginx結(jié)合使用的超級(jí)指南

    Lua和Nginx結(jié)合使用的超級(jí)指南

    這篇文章主要介紹了Lua和Nginx結(jié)合使用的指南,從數(shù)據(jù)轉(zhuǎn)換到API等各個(gè)方面均有涉及,超推薦!需要的朋友可以參考下
    2015-06-06
  • 使用Lua編寫Nginx服務(wù)器的認(rèn)證模塊的方法

    使用Lua編寫Nginx服務(wù)器的認(rèn)證模塊的方法

    這篇文章主要介紹了使用Lua編寫Nginx服務(wù)器的認(rèn)證模塊的方法,即諸如當(dāng)今流行的社交應(yīng)用接入等功能,需要的朋友可以參考下
    2015-06-06
  • Lua的協(xié)程(coroutine)簡(jiǎn)介

    Lua的協(xié)程(coroutine)簡(jiǎn)介

    這篇文章主要介紹了Lua的協(xié)程(coroutine)簡(jiǎn)介,本文講解了coroutine的創(chuàng)建、協(xié)程的三種狀態(tài)和yield函數(shù)的配合使用等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 舉例簡(jiǎn)介L(zhǎng)ua中函數(shù)的基本用法

    舉例簡(jiǎn)介L(zhǎng)ua中函數(shù)的基本用法

    這篇文章主要介紹了舉例簡(jiǎn)介L(zhǎng)ua中函數(shù)的基本用法,--兩個(gè)橫線開始單行的注釋,--[[加上兩個(gè)[和]表示多行的注釋--]],需要的朋友可以參考下
    2015-07-07
  • openresty中使用lua-nginx創(chuàng)建socket實(shí)例

    openresty中使用lua-nginx創(chuàng)建socket實(shí)例

    這篇文章主要介紹了openresty中使用lua-nginx創(chuàng)建socket實(shí)例,本文直接給出代碼實(shí)例和運(yùn)行效果,需要的朋友可以參考下
    2015-04-04
  • Lua中使用.和:調(diào)用函數(shù)的區(qū)別

    Lua中使用.和:調(diào)用函數(shù)的區(qū)別

    這篇文章主要介紹了Lua中使用.和:調(diào)用函數(shù)的區(qū)別,本文總結(jié)了它的調(diào)用函數(shù)的時(shí)傳入?yún)?shù)的區(qū)別,并給出了一個(gè)代碼實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Lua中的函數(shù)精講筆記

    Lua中的函數(shù)精講筆記

    這篇文章主要介紹了Lua中的函數(shù)精講筆記,本文講解了函數(shù)的用途、可變參數(shù)函數(shù)、閉包、非全局函數(shù)等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Lua腳本語(yǔ)言基本語(yǔ)法快速入門教程

    Lua腳本語(yǔ)言基本語(yǔ)法快速入門教程

    這篇文章主要介紹了Lua腳本語(yǔ)言基本語(yǔ)法快速入門教程,本文是一個(gè)簡(jiǎn)易教程,快速的羅列了常用語(yǔ)法,有一定編程語(yǔ)言基礎(chǔ)的同學(xué)更容易看芯片,需要的朋友可以參考下
    2015-07-07
  • Lua面向?qū)ο缶幊讨A(chǔ)結(jié)構(gòu)table簡(jiǎn)例

    Lua面向?qū)ο缶幊讨A(chǔ)結(jié)構(gòu)table簡(jiǎn)例

    今天小編就為大家分享一篇關(guān)于Lua面向?qū)ο缶幊讨A(chǔ)結(jié)構(gòu)table簡(jiǎn)例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10

最新評(píng)論