Ruby实现数组按指定步长循环遍历输出所有元素的方法求解
Ruby数组stride方法实现
我们需要给Ruby的Array类添加一个stride方法,实现按指定步长循环遍历数组元素的功能——当遍历到数组末尾时自动回到开头,直到所有元素都被访问一次。
效果示例
x = [0,1,2,3,4] x.stride(1) do |elem|; puts elem; end # 依次输出 0、1、2、3、4 x.stride(2) do |elem|; puts elem; end # 依次输出 0、2、4、1、3 x.stride(8) do |elem|; puts elem; end # 依次输出 0、3、1、4、2 [].stride(2) do |elem|; puts elem; end # 无输出,代码合法
约束条件
- 步长取值≥1
- 步长与数组长度不为整数倍关系(保证能遍历完所有元素)
待补全的代码结构
class Array def stride(step) numelems = self.length # 数组长度 ... end end
实现方案
class Array def stride(step) yield self[0] unless empty? (self * step).map.with_index do |element, index| next if index == 0 yield element if index % step == 0 end end end
说明:补充了空数组判断,避免空数组调用时出现索引越界问题
内容的提问来源于stack exchange,提问作者Nikos_
相关产品推荐
相关产品推荐

