如何在 Raku 中对列表中的元素进行分组?

men*_*fon 10 raku

Raku 中是否有某种方法,当您向它传递“getter”时,会将原始列表中的项目分组在一起,而 getter 返回相同的值?

我正在寻找类似groupByScala 的东西:

@ (1 until 10).groupBy(_ % 3)
res0: Map[Int, IndexedSeq[Int]] = HashMap(0 -> Vector(3, 6, 9), 1 -> Vector(1, 4, 7), 2 -> Vector(2, 5, 8))
Run Code Online (Sandbox Code Playgroud)

或者groupBy来自 Lodash (JavaScript):

> groupBy(range(1, 10), x => x % 3)
{"0": [3,6,9], "1": [1,4,7], "2": [2,5,8]}
Run Code Online (Sandbox Code Playgroud)

Eli*_*sen 16

在 Raku 中称为分类:

$ raku -e 'say (1..10).classify(* % 3)'
{0 => [3 6 9], 1 => [1 4 7 10], 2 => [2 5 8]}         
Run Code Online (Sandbox Code Playgroud)