【问题标题】:How do I add a method to Ruby Array class?如何向 Ruby Array 类添加方法?
【发布时间】:2016-03-15 04:05:32
【问题描述】:

尝试向 Ruby Array 类添加一个方法,该方法接受一个带有两个参数的代码块。对于数组中每次下一次运行相同的项目,它调用一次代码块,发送运行的长度和重复的项目。不重复的项目将是长度为 1 的运行,单个项目重复一次,就像这样

irb(main):001:0> [4,4,5,6,7,7].every_run {|ct,v| print v, "[", ct, "]\n" }
4[2]
5[1]
6[1]
7[2]
=> nil

【问题讨论】:

  • 基于Enumerable#chunk 的方法怎么样?我想试试,但没时间:-(
  • 请编辑您的问题以包含您编写的代码。如果您不向我们展示代码,真的很难告诉您如何修改代码。
  • @Aspersum 如果数组类似于[4,4,5,6,7,7,4],那么您期待什么输出或者4 的运行长度是多少??

标签: ruby-on-rails arrays ruby sorting


【解决方案1】:
class Array
  def every_run
    chunk(&:itself).map { |n,arr| yield(arr.size,n) }
  end
end

[4,4,5,6,7,7].every_run {|ct,v| print v, "[", ct, "]\n" }
4[2]
5[1]
6[1]
7[2]

在 v2.2 之前,您必须使用

chunk { |e| e }

代替chunk(&:itself)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2015-04-30
    相关资源
    最近更新 更多