【问题标题】:Count class instances in array计算数组中的类实例
【发布时间】:2017-02-26 02:38:27
【问题描述】:

我有型号为CarWheel 的rails 应用程序。 我有返回不同对象数组的方法。例如

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

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

我尝试了array.include?(Car)array.count(Car),但它们不起作用。

【问题讨论】:

    标签: ruby-on-rails arrays ruby


    【解决方案1】:

    您可以使用Enumerable#grep 获取Car 的实例:

    array.grep(Car).size
    

    【讨论】:

    • Enumerable#grep 绝对被低估了,喜欢它!
    • 不得不说,这真是一个好办法。
    【解决方案2】:

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

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

    或者如果听起来更好,您可以使用kind_of? 而不是instance_of?

    【讨论】:

      【解决方案3】:

      kind_of?is_a? 是同义词。它们相当于 Ruby 的 instanceof

      instance_of? 的不同之处在于它只返回 true 如果对象是该确切类的实例,不是子类

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

      更多详情:kind_of? vs is_a? vs instance_of?

      【讨论】:

        猜你喜欢
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 2022-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多