使用拼接修改数组内容
问题描述:
我正在尝试使用splice函数在特定数组位置插入'1'的脚本,打印它并稍后在同一位置插入'0'。我迄今的逻辑是:使用拼接修改数组内容
my @array = (0) x 4096;
for ($j=0;$j<3;$j++) {
splice (@array, $array[$j],1,1);
print "$j---$array[$j]\n";
splice (@array, $array[$j],1,0);
}
有了这个逻辑,我发现了输出为: 0 --- 1 1 --- 0 2 --- 0
要更精确地,我期待出这个逻辑的输出是: 0 --- 1 1 --- 1 2 --- 1
我使用拼接函数正确这里吗?
答
我不认为你需要splice
做你想做的。只是需要一个简单的任务:
use warnings;
use strict;
my @array = (0) x 4096;
for (my $j = 0 ; $j < 3 ; $j++) {
$array[$j] = 1;
print "$j---$array[$j]\n";
$array[$j] = 0;
}
__END__
0---1
1---1
2---1
参考:
perldoc -f splice
答
splice
想要索引不是元素:
splice (@array, $j,1,1);
你的情况,你逝去的0
(元素值)作为索引,因此它在开头插入一个元素。但用单个元素替换单个元素最好用简单的赋值来完成。
是的,当然。我完全陷入了这些perl函数中,我忘记了基本任务。谢谢。但是为什么上面带有'splice'的片段不起作用的任何特殊原因? – CDN
请为我的$ j(0 .. 2){''使用'foreach'而不是' – shawnhcorey