You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby Array按元素自身分块是否存在简便语法糖?

更简洁的替代方案:chunk(&:itself)

嘿,这个问题问得很到位!确实有个超简洁的语法糖能替代你一直在用的chunk{|x| x}写法——Ruby早就为这种「按元素自身对连续重复项分块」的场景准备好了捷径!

为什么这个语法糖可行?

你写的块{|x| x}本质就是返回元素本身,而Ruby的&:method_name语法是Symbol#to_proc特性的简写,它会把符号转换成一个调用对应方法的Proc。刚好Ruby的所有对象都有itself方法,这个方法的作用就是返回对象本身——完美匹配你的块逻辑!

实际示例验证

用你给出的数组测试一下,效果完全一致:

an_array = [4,4,4,5,6,6,6,6,7,7]
# 用语法糖替代原写法
an_array.chunk(&:itself).to_a
# => [[4, [4, 4, 4]], [5, [5]], [6, [6, 6, 6, 6]], [7, [7, 7]]]

额外小补充:其他类似场景的写法

如果之后你需要更灵活的连续项分组(比如自定义相邻元素的判断逻辑),还可以试试chunk_while:

# 按相邻元素相等分组,返回直接是子数组的集合
an_array.chunk_while(&:==).to_a
# => [[4, 4, 4], [5], [6, 6, 6, 6], [7, 7]]

不过这个返回结构和chunk不同,没有[key, group]的外层结构,如果你需要保留原chunk的输出格式,chunk(&:itself)依然是最贴合需求的选择。

内容的提问来源于stack exchange,提问作者Tyl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:33:52