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是比较好的方法,