我有使用模型Car
和Wheel
的rails应用。
我有返回不同对象数组的方法。 e.g。
array = [Car.new, Car.new, Wheel.new, Wheel.new, 'home', 'market', 'fun']
如何计算数组中的Car
个实例和Wheel
个实例?
我尝试了array.include?(Car)
和array.count(Car)
但他们没有用。
答案 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}