【发布时间】:2015-12-29 23:42:51
【问题描述】:
在 Ruby 中,有一个方法 each_cons,可用于迭代给定大小的连续组。例如,
irb(main):001:0> [4, 7, 6, 1, 0, 3].each_cons(2) { |x| p x }
[4, 7]
[7, 6]
[6, 1]
[1, 0]
[0, 3]
=> nil
这里我们从输入数组中选择并打印每对连续的元素。
在 Julia 中如何处理这个问题?
可以这样定义函数:
function eachcons(x::Array{Any,1}, n::Int)
L = length(x)
(L ≤ 1 || n > L) && return nothing # Matches Ruby's behavior
return [x[i-n+1:i] for i = n:L]
end
有没有比这个自定义函数更好或更惯用的方法?
【问题讨论】:
-
请注意,从技术上讲,给定的函数更像是在做
x.each_cons(n).to_a但是¯\_(ツ)_/¯