Home > Tutorial


Ruby Class功能

class Song
  def initialize(name, artist, duration)
    @name     = name
    @artist   = artist
    @duration = duration
  end
end 

這是 class Song 的定義方法,
在這段Script中,定義了一個名Song的Class,
def 這個指令用作定義Class的動作,只有屬於這Class的object才可使用。
def initialize 是內建的class 動作,用作指定每個新Class Object的變數值(value)。

 建立新class 的object方法為

aSong = Song.new("Bicylops", "Fleck", 260)

如果想return 一個class object的address,
直接用aSong.to_s便可。
.inspect 則用來傳回值。

 aSong.to_s     >     "#<Song:0x401b499c>"

aSong.inspect     >

"#<Song:0x401b4924 @duration=260, @artist=\"Fleck\", @name=\"Bicylops\">"

 如果想用另一種形式來顯示值...

 class Song 
  def to_s 
    "Song:
#{@name}--#{@artist} (#{@duration})" 
  end 
end 
aSong = Song.new("Bicylops", "Fleck", 260) 
aSong.to_s     >     "Song: Bicylops--Fleck (260)" 

 如果宣告了.to_s,在subclass就可以直接用宣告了的方式傳回值。
 有很多人初學ruby時(包括我),都不知道attr_reader有什麼用。

class Song 
  attr_reader :name, :artist, :duration 
end 
aSong = Song.new("Bicylops", "Fleck", 260) 
aSong.artist     >     "Fleck" 
aSong.name     >     "Bicylops" 
aSong.duration     >     260 


這樣就可以用這個方法讀取value。
attr_writer和attr_accessor都是這麼用。

本日誌只會重點記錄學習內容,
詳細資料請到Ruby官方網站。

http://www.ruby-lang.org/

 

回前頁

Hosted by www.Geocities.ws

1