如果我有arr = [1, 2, 3, 4],我知道我可以做到以下几点...

> arr.each_slice(2) { |a, b| puts "#{a}, #{b}" }
1, 2
3, 4

...和

> arr.each_with_index { |x, i| puts "#{i} - #{x}" }
0 - 1
1 - 2
2 - 3
3 - 4

...但有没有一种内在的方法可以做到这一点?

> arr.each_slice_with_index(2) { |i, a, b| puts "#{i} - #{a}, #{b}" }
0 - 1, 2
2 - 3, 4

我知道我可以构建自己的,并将其粘贴到数组方法中.只是想看看是否有一个内置的功能来做到这一点.

推荐答案

与大多数迭代器方法一样,当在ruby 1.8.7+之后调用each_slice时,如果没有块,each_slice将返回一个可枚举方法,然后可以在上调用其他可枚举方法.所以你可以做:

arr.each_slice(2).with_index { |(a, b), i| puts "#{i} - #{a}, #{b}" }

Ruby相关问答推荐

当bsearch将数组中的第一个元素与2个值匹配时,它返回nil.为什么?

R10K模块在try 安装gem r10k时获得错误的Ruby版本

环绕分隔线,保留第一列,最小最终长度

如何在加载文件时禁用重新定义常量的警告

为什么在 Ruby 中将 0 视为 True?

如何关闭 Rails 3.1 上的自动样式表/javascript 生成?

Ruby 中的 STDIN 和 $stdin 有什么区别?

出于调试目的,如何打印有关 NET:HTTPRequest 的信息?

Rails 在最后一个之前加入逗号和and的字符串列表

如何在 Ruby 中使用 (n) 诅咒?

Ruby字符串上的扫描和匹配有什么区别

Ruby 中的方法: objects与not?

对于基于 GitHub 的 gem,强制Bundle 安装使用 https:// 而不是 git://

在 RSpec 测试期间 suppress 控制台输出

带有可选参数的方法

如何强制 Ruby 字符串为 n 个字符

默认情况下需要查找的路径是什么?

使用正则表达式进行 Ruby Electron邮件验证

如何在 Ruby 中读取整个文件?

我更改存储库 URL 后 Capistrano 部署失败