如何向Ruby Array类添加方法?

时间:2016-03-15 04:05:32

标签: ruby-on-rails arrays ruby sorting

尝试向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

1 个答案:

答案 0 :(得分:2)

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)