gpt4 book ai didi

performance - Perl:切片数组,而不创建一个全新的数组

转载 作者:行者123 更新时间:2023-12-04 02:59:30 26 4
gpt4 key购买 nike

我有一个大数组的引用,并且一些元素(从某个索引到末尾)需要习惯于在数据库中插入新行。

无论如何我可以创建对更大数组的一部分的引用吗?
或者我可以通过 DBI 的 execute_array 函数使用数组的一部分,而无需 Perl 在后台复制数据加载的另一种方式?

这是我想要更有效地做的事情:

$sh->execute_array({}, [ @{$arrayref}[@indexes] ]);

最佳答案

数组切片返回多个值并具有 @印记:

my @array = (1, 2, 3, 4);

print join " ", @array[1..2]; # "2 3"

my $aref = [1, 2, 3, 4];

print join " ", @{$aref}[1..3]; # "2 3 4"

切片将返回标量列表(!= 数组)。但是,这本身不是副本:
my @array = (1, 2, 3, 4);

for (@array[1..2]) {
s/\d/_/; # change the element of the array slice
}

print "@array"; # "1 _ _ 4"

所以这是非常有效的。

如果要创建新数组(或数组引用),则必须复制值:
my @array = (1, 2, 3, 4);

my @slice = @array[1..2];

my $slice = [ @array[1..2] ];

语法 \@array[1..2]将返回对切片中每个元素的引用列表,但不返回对切片的引用。

关于performance - Perl:切片数组,而不创建一个全新的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15160882/

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