【发布时间】:2018-10-16 12:56:22
【问题描述】:
duckmap将在每个元素上应用&block并返回一个带有定义的块返回值的新列表。对于未定义的返回值,如果该元素实现了Iterable,duckmap将尝试下降到该元素中。
然后:
my $list = [[1,2,3],[[4,5],6,7]];
say $list.deepmap( *² ); # [[1 4 9] [[16 25] 36 49]]
say $list.duckmap( *² ); # [9 9]
deepmap 的行为与预期的差不多,但我无法真正理解 duckmap 在做什么。
此问题与this issue in perl6/doc 有关。它可以用“他们不能再不同了”来解决,但我想找到一些他们做同样事情的例子,当他们不这样做时,试着真正理解发生了什么。
【问题讨论】:
-
[9,9]正在对子列表中的元素计数进行平方。尝试添加或删除要检查的元素。除了其他有用的答案,文档工作可能会发现 S32-list/duckmap.t 感兴趣:github.com/perl6/roast/blob/master/S32-list/duckmap.t
标签: recursion functional-programming raku map-function duck-typing