在哈希中§
有关方法 categorize-list 的主要文档,请参阅上下文
multi method categorize-list(, *, : --> Hash)multi method categorize-list(, *, : --> Hash)multi method categorize-list(, *, : --> Hash)
通过使用给定的 mapper 对可能为空的 @list 值进行分类来填充 Hash,可以选择使用 :&as Callable 更改值。 @list 不能是惰性的。
映射器可以是采用单个参数的 Callable、Associative 或 Iterable。对于 Associative 和 Iterable 映射器,@list 中的值分别表示映射器值的键和索引。 Callable 映射器将针对 @list 中的每个项目执行一次,并将该项目作为参数,其返回值将用作映射器的值。
在角色 Baggy 中§
有关方法 categorize-list 的主要文档,请参阅上下文
multi method categorize-list(, * --> Baggy)multi method categorize-list(, * --> Baggy)multi method categorize-list(, * --> Baggy)
使用给定的 mapper 对可能为空的 @list 值进行分类,填充一个 可变的 Baggy。@list 不能是惰性的。
say BagHash.new.categorize-list:, ^10;# OUTPUT: BagHash(largish(4) even(5) non-prime(6) prime(4) odd(5))my = :sugar<sweet white>, :lemon<sour>, :cake('sweet', 'is-a-lie');say MixHash.new.categorize-list: , <sugar lemon cake>;# OUTPUT: MixHash(is-a-lie sour white sweet(2))
映射器可以是采用单个参数的 Callable、Associative 或 Iterable。对于 Associative 和 Iterable 映射器,@list 中的值分别表示映射器值的键和索引。 Callable 映射器将针对 @list 中的每个项目执行一次,并将该项目作为参数,其返回值将用作映射器的值。
映射器的值将用作 Baggy 的键列表(可能为空),并将增加 1。
**注意:** 与 Hash 的 .categorize-list 不同,返回 Iterables 列表作为映射器的值将会抛出异常,因为 Baggy 类型不支持嵌套分类。出于同样的原因,Baggy 的 .categorize-list 不接受 :&as 参数。