2016-10-17 5 views
-1

モデルCarWheelのレールアプリがあります。 私はさまざまなオブジェクトの配列を返すメソッドを持っています。例えば配列にCarインスタンスとWheelインスタンスをカウントする方法配列のクラスインスタンスをカウントする

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

私はarray.include?(Car)array.count(Car)を試しましたが、動作しませんでした。

答えて

7

あなたは:

instance_of?は、サブクラスの詳細については

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

ないオブジェクトがその正確なクラスのインスタンスである場合にのみtrueを返すことで、異なっているEnumerable#grepを使用してCarのインスタンスを取得することができます。

array.grep(Car).size 
+0

'Enumerable#grep'は間違いなく過小評価されています。 – mudasobwa

+0

これは本当に素晴らしい方法だと言わなければならない。 – Sajan

2

あなたは車のインスタンスをカウントするため、以下のように行うことができます:それは良く聞こえる場合は、kind_of?を使用することができます

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

またはその代わりinstance_of?の。

関連する問題