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 ...