计算数组中的类实例

时间:2016-10-17 07:37:41

标签: ruby-on-rails arrays ruby

我有使用模型CarWheel的rails应用。 我有返回不同对象数组的方法。 e.g。

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

如何计算数组中的Car个实例和Wheel个实例?

我尝试了array.include?(Car)array.count(Car)但他们没有用。

3 个答案:

答案 0 :(得分:7)

您可以使用Enumerable#grep来获取(define (xor3 a b c) (or (and a (not b) (not c)) (and b (not a) (not c)) (and c (not a) (not b)))) 的实例:

Car

答案 1 :(得分:2)

你可以像下面那样计算Car实例:

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

或代替instance_of?,如果听起来更好,您可以使用kind_of?

答案 2 :(得分: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?