我正在尝试获取数组的 umptieth 元素:
my @lazy-array = lazy 1, 11, 121 ... 10**100;
say @lazy-array[10**50];
Run Code Online (Sandbox Code Playgroud)
这产生
Cannot unbox 167 bit wide bigint into native integer
Run Code Online (Sandbox Code Playgroud)
如果我将它分配给一个变量,同样的问题。这似乎没有反映在文档中,不知道是功能还是错误。另外,访问这些位置的正确方法是什么(迭代除外)
在基于 NQP 的 Raku 当前实现中,数组索引最多为 63 位(至少在 64 位构建中)。
use nqp;
my $l := nqp::list;
dd nqp::atpos($l,0x7fff_ffff_ffff_ffff); # Mu
dd nqp::atpos($l,0x7fff_ffff_ffff_ffff + 1);
# Cannot unbox 64 bit wide bigint into native integer
Run Code Online (Sandbox Code Playgroud)
我不会将其视为功能或错误,而是当前实现的限制。
请注意,如果您想使用更大的索引,您可以使用Array::Sparse。