在 Any 中§

有关方法 nodemap 的主要文档,请参阅 上下文

method nodemap(&block --> Listis nodal

nodemap 将对每个元素应用 &block 并返回一个包含 &block 返回值的新 List。与 deepmap 相反,如果它找到执行 Iterable 角色的元素,它将不会递归下降到子列表中。

say [[1,2,3], [[4,5],6,7], 7].nodemap(*+1);
# OUTPUT: «(4, 4, 8)␤» 
 
say [[23], [4, [56]]]».nodemap(*+1)
# OUTPUT: «((3 4) (5 3))␤»

如果我们使用 map 而不是 nodemap,则上面的示例将产生完全相同的结果。两者之间的区别在于 map 会展平 Slip,而 nodemap 不会。

say [[2,3], [[4,5],6,7], 7].nodemap({.elems == 1 ?? $_ !! slip});
# OUTPUT: «(() () 7)␤» 
say [[2,3], [[4,5],6,7], 7].map({.elems == 1 ?? $_ !! slip});
# OUTPUT: «(7)␤»

当应用于 Associative 时,它将作用于值

{ what => "is"this => "thing" }.nodemap*.flip ).say;
# OUTPUT: «{this => gniht, what => si}␤»