大佬教程收集整理的这篇文章主要介绍了ruby – 根据值将子阵列拆分成子阵列,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
class Array def split( split_on=nil ) inject([[]]) do |a,v| a.tap{ if block_given? ? yield(v) : v==split_on a << [] else a.last << v end } end.tap{ |a| a.pop if a.last.empty? } end end p (1..9 ).to_a.split{ |i| i%3==0 },(1..10).to_a.split{ |i| i%3==0 } #=> [[1,2],[4,5],[7,8]] #=> [[1,8],[10]]
编辑:对于那些感兴趣的人来说,引发这个请求的“真实世界”的问题可以在this answer中看到,在这里我用了@ fd的下面的答案来实现.
(1..9).chunk{|i|i%3==0}.reject{|sep,ans| sep}.map{|sep,ans| ans}
或更快:
(1..9).chunk{|i|i%3==0 || nil}.map{|sep,ans| sep&&ans}.compact
此外,Enumerable#chunk似乎是Ruby 1.9,但它非常接近你想要的.
例如,原始输出将是:
(1..9).chunk{ |i|i%3==0 }.to_a => [[false,[1,2]],[true,[3]],[false,5]],[6]],8]],[9]]]
(to_a是使irb打印一些好东西,因为块给你一个枚举器而不是一个数组)
编辑:请注意,上述优雅的解决方案比最快的实施速度慢2-3倍:
@H_932_2@module Enumerable def spliT_By result = [a=[]] each{ |o| yield(o) ? (result << a=[]) : (a << o) } result.pop if a.empty? result end end以上是大佬教程为你收集整理的ruby – 根据值将子阵列拆分成子阵列全部内容,希望文章能够帮你解决ruby – 根据值将子阵列拆分成子阵列所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。