【问题标题】:Count instances of a value in an array in Ruby 1.8.6在 Ruby 1.8.6 中计算数组中值的实例
【发布时间】:2011-02-04 11:54:07
【问题描述】:

以下行在 ruby​​ 1.8.7 中运行良好,但在 1.8.6 中运行良好。我可以在 1.8.6 中使用什么替代方法

x = [3,4,5,6,7,78,4,3,2,5,5,3]
x.count(3)
=> 3

由于 count 在 1.8.6 版本中不是 Array 中的方法,因此我收到此错误。这个版本有没有类似的方法?

【问题讨论】:

    标签: ruby arrays


    【解决方案1】:
    x = [3,4,5,6,7,78,4,3,2,5,5,3]
    x.grep(3).size
    #=> 3
    

    【讨论】:

      【解决方案2】:
      count = x.select {|e| e == 3}.size
      

      【讨论】:

      • 如果对任何人都更难忘,find_allselect 的别名 - 或者 selectfind_all 的别名。无论如何,两者在这里都很好用。
      • 我以前总是在 Groovy 中混淆 select 和 findAll。因此,如果您使用不止一种动态语言,请尝试使用一种 :)
      【解决方案3】:

      作为一般提示:有一个非常酷的backports library by Marc-André Lafortune,它尝试实现 Ruby 1.8.7、1.8.8 的尽可能多的新功能(即 Subversion 存储库中 1_8 分支的尖端) , 1.9.1 和 1.9.2 标准库以及一些从 ActiveSupport 中选择的方法,尽可能在纯的、跨 1.8-1.9 兼容的 Ruby 中。

      所以,如果你只是这样做

      require 'backports'
      

      它会将您的 Ruby 1.8.6、1.8.7 或 1.9.1 转换为尽可能接近 Ruby 1.9.2,而不会降级为 C 或破坏向后兼容性。

      免责声明:我自己并没有真正使用过它,因为无论如何我都没有看到使用过时版本的 Ruby 的意义。

      【讨论】:

      • 仅供参考,现在可以要求特定的反向端口(在本例中为 require 'backports/1.8.7/enumerable/count'
      猜你喜欢
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      相关资源
      最近更新 更多