在哈希中§
有关方法 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
参数。