Ruby Programming/Classes and objects
外觀
Ruby 類別
[編輯]在Ruby中任何東西都是物件。每個物件都有個類別。找出一個物件的類別只要呼叫物件的class方法即可,來看看這個範例:
puts "This is a string".class puts 9.class puts ["this","is","an","array"].class puts {:this => "is", :a => "hash"}.class puts :symbol.class
不論如何,你都應該已經知道了這個。你目前還不知道的只是如何建立你自己的類別跟延伸Ruby內建的類別。
建立類別實體
[編輯]一個類別實體是一個該類別的物件,舉例來說,"chocolate"是一個字串類別實體。你已經知道你可以建立字串、陣列、雜湊(hashes)、數值(numbers)與其他內建的型態透過引號(雙引號或單引號)、中括號、大括號等等,但你也可以透過new方法來建立它們。 舉例來說,my_string = ""等同於my_string = String.new 每個類別都有一個new方法:陣列、雜湊、整數,不論是什麼都一樣。當你建立你自己的類別時,你也會使用new方法來建立實體。
建立類別
[編輯]類別意味着是一個物件的型態,就像是一本書,一隻鯨魚,一個葡萄或者是巧克力。每個人都愛巧克力,所以我們來建立一個巧克力類別:
class Chocolate def eat puts "That tasted great!" end end
來看看這個。類別是透過class保留字來建立的,緊接着是類別的名字。所有的類別名稱都必須以大寫英文開頭。大部分我們都會用CamelCase(駱駝拼寫法)來替類別命名。所以我們可以建立一個像是PieceOfChocolate的類別,但是不能寫成Piece_of_Chocolate。
接下來就是定義類別方法。一個類別方法是一個類別中個別定義的方法,舉例來說,String類別有一個length方法:
# 輸出 "5" puts "hello".length
呼叫一個巧克力類別實體的eat方法,我們會這樣寫:
my_chocolate = Chocolate.new my_chocolate.eat # 輸出 "That tasted great!"
你也可以透過send來呼叫方法
"hello".send(:length) # 輸出 "5" my_chocolate.send(:eat) # 輸出 "That tasted great!"
然而,使用send是比較好的方法,