Ruby:如何通过非布尔谓词将Enumerable集合拆分为多个分区?
Ruby 标准库中的多分区实现
当然有,Ruby 内置的 Enumerable#group_by 方法就能完美实现你要的功能——用非布尔谓词把集合分成多个分区。
它的用法和你自定义的 factorize 逻辑一致:通过块返回的键值对元素分组,之后调用哈希的 values 方法就能得到分组后的数组列表。用你的示例场景演示:
(1..10).group_by { |n| n % 3 }.values # => [[1, 4, 7, 10], [2, 5, 8], [3, 6, 9]]
group_by 是 Ruby 标准库原生方法,不需要自己手动实现分组逻辑。它会遍历集合中的每个元素,以块的返回值作为哈希的键,将元素添加到对应键的数组中,最终返回一个包含所有分组的哈希,取这个哈希的 values 就得到了你想要的多分区结果。
内容的提问来源于stack exchange,提问作者Toni Schilling
相关产品推荐
相关产品推荐

