Ruby Class裡的變數

2021-08-22 06:27:12 字數 1536 閱讀 5142

class variables:用於描述屬於class 的 states,而非屬於某個object的states

1.表現形式 @@var

2.屬於特定的class而不是object

3.在使用前,必須初始化

class song

@@plays = 0

def initialize(name, artist, duration)

@name= name

@artist= artist

@duration = duration

@plays= 0

enddef play

@plays += 1# same as @plays = @plays + 1

@@plays += 1

"this song: #@plays plays. total #@@plays plays."

endend

*class variable是一種介於instance variables 和 global variables 間的一種variable,它在某些用途上,能夠達到global variables的意圖,又能避免global variables的***

4.class variables 和 instance variables一樣如果要被外部訪問,必須建立方法,注意不可以使用這樣的方法建立:

class song

@@test=1

attr_reader :test #不支援accessor method

endsong = song.new

print song.test

結果:nil

使用下面的方式(請記住,下面的方法,test和test=不是attributes!,attributes僅僅是那些可以訪問的instance variables的方法):

class song

@@test=1

#attr_reader :test

def test #定義乙個普通的方法

@@test

enddef test=(t) #定義乙個普通的方法

@@test=t

endend

song = song.new

print song.test結果1

其實除了上面的方式,還可以使用class methods,

def self.屬性名稱

end在用法上總結一下,所有屬性都可以定義一組方法:

def 屬性名字

屬性end

def 屬性名字=(a)

屬性=a

end來實現屬性的訪問,對於instance variables,我們可以使用更好的方法:

attr_reader :屬性名 , :屬性名

attr_writer :屬性名 , :屬性名

attr_accessor 一舉兩得: 同時兼備 attr_reader attr_writer 的作用。

attr 只能帶乙個符號引數, 第二個引數是乙個 bool 引數,用於指示是否為頭乙個符號引數產生寫方法。它的預設值是 false , 不產生寫方法。

sh裡的變數 0 1

0就是該bash檔名 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。所有位置引數的內容 就是呼叫呼叫本bash shell的引數。基本上與上面相同。只不過是 返回的是乙個字串,字串中存在多外空格。返回多個字串。還有 返回所有位置引數的個數。執行當前sh檔案的pid touch var...

MySQL裡的變數分系統變數和使用者變數

mysql裡的變數分系統變數和使用者變數 mysql裡的變數分系統變數和使用者變數.系統變數 其中系統變數,又分全域性 global 和會話 session 兩種.全域性系統變數,主要影響整個mysql例項的全域性設定.大部分變數都是作為mysql的伺服器調節引數存在.新增或修改這類變數,會影響my...

shell變數裡的字元替換

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!shell變數裡的字元替換 b 將 裡的第乙個123替換為321 b 將 裡的所有123替換為321 shell除錯 shell十三問 不過,假如你只看到 只能用來界定變數名稱的話,那你就實在太小看 bash 了 有興趣的話,你可先參考一下 cu ...