尝试向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
答案 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)