有没有类似于 Haskell 循环的 Ruby 方法?Haskell 的循环接受一个列表并返回无限附加到自身的列表。它通常与 take 一起使用,它从数组顶部抓取一定数量的元素。是否有一个 Ruby 方法接受一个数组并返回附加到自身的数组 n 次?
问问题
163 次
2 回答
9
是的,它叫cycle
. 从文档中:
数组.循环 (来自红宝石核心) -------------------------------------------------- ---------------------------- ary.cycle(n=nil) {|obj| 块 } -> 无 ary.cycle(n=nil) -> an_enumerator -------------------------------------------------- ---------------------------- 为每个元素重复调用块 n 次,如果没有则永远调用 或给出 nil。如果给定一个非正数或数组为空,则 没有。如果循环结束且没有被中断,则返回 nil。 如果没有给出块,则返回一个枚举器。 a = [“a”,“b”,“c”] a. 循环 {|x| puts x } # print, a, b, c, a, b, c,.. 永远。 a.cycle(2) {|x| puts x } # print, a, b, c, a, b, c.
编辑:
似乎块内的内容基本上是一个“Lambda”,据我所知,我无法将每个元素都连接到现有数组上。
b = [1, 2, 3]
z = []
b.cycle(2) { |i| z << i }
z # => [1, 2, 3, 1, 2, 3]
于 2013-03-06T07:02:01.133 回答
3
您可以使用以下方法将数组乘以整数Array#*
:
ary * int → new_ary
[...] 否则,返回一个通过
int
连接self
.
所以你可以做这样的事情:
>> [1, 2] * 3
=> [1, 2, 1, 2, 1, 2]
于 2013-03-06T07:03:57.273 回答