gpt4 book ai didi

raku - 返回多个数组时避免创建临时标量

转载 作者:行者123 更新时间:2023-12-04 03:41:53 25 4
gpt4 key购买 nike

从函数返回多个数组时是否可以避免创建临时标量:

use v6;
sub func() {
my @a = 1..3;
my @b = 5..10;
return @a, @b;
}
my ($x, $y) = func();
my @x := $x;
my @y := $y;
say "x: ", @x; # OUTPUT: x: [1 2 3]
say "y: ", @y; # OUTPUT: y: [5 6 7 8 9 10]

我想避免创建临时变量 $x$y .
注意:不能将函数调用替换为
my (@x, @y) = func()

自从 assignment of a list to an Array is eager因此两个返回的数组都以 @x 结尾.

最佳答案

不是:

my ($x, $y) = func();
my (@x, @y) = func();

但取而代之的是:
my (@x, @y) := func();
my ($x, $y) := func();

使用 @向 P6 发出信号,当它需要区分某事物是单数 - “单个数组” - 或复数 - “包含在单个数组中的项目”时 - 它应该被视为复数。

使用 $以相反的方式发出信号——它应该被视为单数。

您可以稍后通过执行 $@x 来显式地反转它。 -- 表示 P6 应该使用单数视角来表示您最初声明为复数的东西 -- 或 @$x以相反的方式发出倒车信号。

打个比方,想象一个蛋糕被切成几 block 。它是一个东西还是一堆碎片?另请注意 @缓存片段的索引,而 $只记得这是一个蛋糕。对于大量的事情,这可能会产生很大的不同。

关于raku - 返回多个数组时避免创建临时标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55563166/

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