2016-10-17 145 views
-1

我有導軌應用程序,型號爲CarWheel。 而且我有返回不同對象數組的方法。例如計數數組中的類實例

array = [Car.new, Car.new, Wheel.new, Wheel.new, 'home', 'market', 'fun'] 

如何計算陣列中的Car實例和Wheel實例?

我試過array.include?(Car)array.count(Car)他們沒有工作。

回答

7

你可以使用Enumerable#grep來獲取Car的實例:

array.grep(Car).size 
+0

'Enumerable#grep'絕對被低估了,喜歡它! – mudasobwa

+0

我不得不說這是一個非常棒的方法。 – Sajan

2

可以計數例如汽車做象下面這樣:的instance_of?

array.count { |e| e.instance_of? Car} 

或代替你可以使用kind_of?如果這聽起來更好。

2

kind_of?is_a?是同義詞。他們是Ruby的等同於Java的instanceof

instance_of?是不同的,只如果對象是確切類的一個實例返回true不是一個子類別

array.count { |e| e.instance_of? Car} 

有關詳細信息:kind_of? vs is_a? vs instance_of?