gpt4 book ai didi

raku - 访问被调用者/这个在 Raku map 代码/ block

转载 作者:行者123 更新时间:2023-12-04 11:18:32 24 4
gpt4 key购买 nike

是否可以访问 Raku map 代码块和/或任何代码中的“被调用者”(“this”)?
例如。如果想计算算术平均值

my $data = <1 10 0 7 2> ;
say $data.sum
/ $data ; # or @$data, same as $data.elems in this numeric context
# OUTPUT: «4␤»
分数相加
say $data.map(* / $data).sum
# OUTPUT: «4␤»
喜欢
<1 10 0 7 2>.map({ $_ / $this }).sum   # but there's no $this
或者
<1 10 0 7 2>.map( * / $this ).sum
如果没有,是否有一种惯用的方法可以仅通过 <…> 上的一系列方法调用来实现?数据文字,或不同的方式,而不将数据存储在变量中?

最佳答案

据我所知,没有。您需要能够知道迭代器将产生多少个值。
在引擎盖下,一个 foo.map: &callable基本上是:

my $iterator = foo.iterator;
callable($iterator.pull-one) until iterator exhausted;
请注意,此时所有关于迭代器源的知识都丢失了:只有一个迭代器产生值。
某些类型的迭代器(所谓的 PredictiveIterator s 可以告诉您它仍然可以生成多少个值,而无需实际生成它们。但大多数迭代器无法做到这一点。
我想从技术上讲 map 是可能的检查它是否有 PredictiveIterator并设置一个动态变量及其将产生的值的数量,然后您可以在 &callable 中检查该变量。 .
尽管如此,我认为这不值得为 额外检查一下。全部 map s 和 for循环,所以我认为不会接受这种功能的 PR。

关于raku - 访问被调用者/这个在 Raku map 代码/ block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68516761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com