Ruby程式設計語言快速入門之對象,方法和類

來源:互聯網
上載者:User
 

  在Ruby中,一切都是對象。對於那些喜歡使用高度物件導向的語言(例如Smalltalk,Eiffel或CLOS)的使用者來說,這是非常受歡迎的。例如1,2,3或10.8等等都是對象,而不是如Java或C++中的原始類型;字串是對象,類和方法也都是對象。例如,下面都是有效Ruby代碼(在Ruby中,注釋行是以"#"符號界定的):

#對象-34的絕對值
-34.abs
#對一個浮點數進行四捨五入處理
10.8.round
#返回一個字串對象的大寫且逆轉的副本
"This is Ruby".upcase.reverse
#返回數學sin方法的參數個數
Math.method(:sin).arity

 


圖5.Ruby是全對象化的:在Ruby中,整數,浮點數,字串,甚至類和方法都是對象。這裡的代碼展示了針對這些類型對象的方法調用。

  在Ruby中,所有功能都是通過調用對象上的方法(或操作)實現的。事實上,Ruby中的方法調用就象其它程式語言中的函數或程序呼叫一樣。

  就象在所有物件導向程式語言中一樣,對象是從類中建立的。Ruby庫中提供了許多預構建的類。你可以修改這些類或構建你自己的類。Ruby中的類是使用"class"關鍵字定義的。類名開始是一個大寫字母。類定義以"end"關鍵字結束。因此,一個Rectangle類的定義可能有如下形式:

class Rectangle
end 

  為了把方法添加到類,可以使用def關鍵字。方法的定義也應該以end關鍵字結束。跟隨def關鍵字和方法名後面就是方法參數。把一個area方法添加到上面的Rectangle類的代碼看上去如下所示:

class Rectangle
def area (hgt,wdth)
return hgt*wdth
end
end 

  對於那些熟悉其它程式語言的使用者,他可能注意到一些差別。Ruby並不使用任何花括弧來限定類或方法,也不使用分號或其它字元來表示程式語句行的結束。Ruby的目標,根據它的建立者說明,是簡單、易用並使編碼成為一件"趣事"。誰想記住所有的那些分號?沒有意思!在Ruby中,只要你把語句放在一行上,不需要分號或其它程式碼結束標記。順便說一下,在area方法參數周圍的括弧是不必要的。在預設情況下,Ruby返回一個方法中最後的內容,因此return關鍵字也可以省略。因此,你可以建立如下簡單編碼的Rectangle類:

class Rectangle
def area hgt, wdth
hgt*wdth
end
end

 

  儘管上面代碼是有效,但是小括弧還是被推薦使用於方法參數表達的,這主要是為了實現較好的可讀性。

       執行個體變數和屬性

  類也可以有執行個體變數(在一些語言中也稱為屬性)。例如,由Rectangle類建立的對象應該都有一個高度和寬度。在Ruby中,執行個體變數不必顯式地在類中聲明,只是必須在它們的命名中以一個特殊字元來標記和使用。具體地說,所有的執行個體變數名都以"@"開頭。為了實現當調用area方法時,儲存矩形執行個體的高度和寬度,你僅需把執行個體變數添加到area方法即可:

class Rectangle
def area (hgt, wdth)
@height=hgt
@width = wdth
@height*@width
end
end

 

  更確切地說,當建立一個Rectangle執行個體時,應該指定高度和寬度,而執行個體變數在此時才確定。另外,Ruby提供了一種特殊的方法initialize,它允許你建立或準備類的新執行個體:

class Rectangle
def initialize (hgt, wdth)
@height = hgt
@width = wdth
end
def area ()
@height*@width
end
end

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.