枚举数组但将数组的子集传递给块而不是单个元素

时间:2012-07-05 14:50:33

标签: ruby

我是ruby的新手,我一直在阅读很多教程。昨天我SWEAR我读了一个在数组上枚举的each语句(或类似的东西)的例子,然后将数组的子集传递给了块。这是一个例子,但语法错误(或者我使用了错误的方法)所以这实际上不会运行。

arry = ["a", "b", "c", "d", "e"]

arry.each(3) {|a, b, c| puts a+b+c}

如果我使用正确的命令,则会打印:abc bcd cde;它需要从索引开始的数组的前三个成员,并且当没有足够长的字符串来提供所有三个参数时,枚举结束。我不记得怎么做了,我似乎无法谷歌正确找到它。你们中的任何人都知道吗?

3 个答案:

答案 0 :(得分:8)

each_cons(3)表现得那样。它位于Enumerable(数组包括可枚举),这就是你找不到它的原因。

答案 1 :(得分:2)

你的意思是combination

arry.combination(3).each {|a, b, c| p a+b+c}

答案 2 :(得分:1)

each_slice怎么样?

arry.each_slice(3) {|a,b,c| p a+b+c}