sid*_*com 6 arrays element raku
阅读此答案后,我查看了我的代码并找到了一些elems
与数组一起使用的地方。
我可以在elems
不影响代码的情况下删除所有内容:
my @a = 1, 2, 3, 4, 5;
my $b = [ 1, 2, 3, 4 ];
my $i = 2;
say $i + @a.elems;
say $i + @a;
say "===============";
say @a.elems;
say 0 + @a;
say "===============";
say $b.elems / 2;
say $b / 2;
say "===============";
while state $c++ > $b.elems {
say $c;
}
while state $d++ > $b {
say $d;
}
Run Code Online (Sandbox Code Playgroud)
这让我想知道是否存在必须使用elems
函数调用数组才能使代码工作的情况。
每当数字运算符将 anIterable
视为其操作数之一时,它就会调用其.elems
上的方法。有时这会导致抛出aFailure
或 an Exception
:
$ raku -e 'say (1 ... *) + 42'
Cannot .elems a lazy list
Run Code Online (Sandbox Code Playgroud)
请注意,.elems
在代码中使用 有两个优点: