Ruby 是純面向對象的語言,Ruby 中的一切都是以對象的形式出現(xiàn)。Ruby 中的每個值都是一個對象,即使是最原始的東西:字符串、數(shù)字,甚至連 true 和 false 都是對象。類本身也是一個對象,是 Class 類的一個實例。
在Ruby中,所操作的一切都是對象,操作的結果也是對象。這一點和js相同,js中甚至方法都是對象。
很多語言都說自己是面向對象的,但是他們往往對面向對象的解釋都一樣,大多是以自己特有的方式來解釋什么是面向對象,而在實際情況中,這些面向對象語言又采用了很多非面向對象的做法。
以 Java 為例:如果你想取一個數(shù)字取絕對值,java 的做法是:
int num = Math.abs(-99);
也就是將一個數(shù)值傳遞給 Math 類的一個靜態(tài)函數(shù) abs 處理。為什么這么做?因為在 java 中,數(shù)值是基本類型不是類。
而在 Ruby 中,任何事物都是對象,也就是說,數(shù)字–99就是對象,取絕對值這樣的操作應該屬于數(shù)字本身,所以Ruby的做法就是:
c = -99.abs