【发布时间】:2015-09-05 03:36:06
【问题描述】:
我有这种形式的数组:[1, 2, 1, 4, 5, 4, 1, 7, 7, 6],我需要将它们切成 [[1, 2, 1], [4, 5, 4], [1], [7, 7, 6]] 之类的东西,其中间断由大于 1 的连续对之间的绝对差决定。
Ruby 中是否有一些我可以利用的魔力,还是我不得不编写一个普通的旧迭代?
【问题讨论】:
-
@Stefan 有一个很好的答案,但为什么要急于做出选择呢?为什么不给其他人一些时间(他们现在正在研究答案)提出其他建议。顺便说一句,
slice_when(也许是slice_after)是相当新的(我相信Ruby 2.2)。 -
Stefan 的回答有效并指向正确的文档 (2.2.2),这就是接受此类问题的答案所需的全部内容。版本点是没有实际意义的:如果有人没有使用该特定版本并且有一个可行的替代解决方案,欢迎他们发布它,读者将受益于这些,以及 Stefan 的。至于什么是“最佳”答案,我们可以整天争论不休,但我相信没有唯一的标准来确定“最佳”。
-
如果我发布了这个问题,我也会选择@Stefan 的答案,但我至少要等几个小时才能这样做。至于
slice_when何时可用,我只是通知您和其他可能不熟悉新方法的读者。我只是不喜欢快速绘制的选择。他们可以阻止其他,有时更好,有时发人深省的答案,并且(imo)对那些仍在准备答案的人不礼貌。 (当我开始准备我的答案时,绿党已经起来了。)