2007年7月6日 星期五

ruby的隨加入method

廢話不多說,先看到code,裡面會有兩個class關鍵字,定義同一個class,然後會被程式視為相同的class
# main.rb
# 2007年7月6日
#

#puts "Hello World"

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

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

class Song
def to_s
"Song: #{@name} #{@artist} #{@duration}"
end
end

p aSong.to_s


結果如下
"#song:0xb7c93404 name="\"Bicylops\"," duration="260," artist="\"Fleck\"""
"#song:0xb7c93404"
"Song: Bicylops Fleck 260"


to_s是本來只有單純的印出object id,我們不想那麼無聊,重新定義一個to_s的方法,這意味著我們可以隨時幫class新增方法,這真的跟過去的編譯語言很不一樣,不過畢竟他是script

接著來看getter跟setter的使用方式,這一點比java聰明一點,只要使用attr_reader就可以定義屬性了,後面要接上:variable

...
class Song
attr_reader :name,:artist,:duration
end

p aSong.name
p aSong.artist
p aSong.duration

沒有留言: