我一直在研究阵列切片,坦率地说,没有看到选择@array[1]和之间的区别$array[1].有区别吗?
#!/usr/bin/perl
@array = (1,3);
print "\nPrinting out full array..\@array\n";
print "@array\n";
print "\n";
print "Printing out \@array[1]\n";
print "@array[1]\n";
print "Printing out \$array[1]\n";
print "$array[1]\n";
print "\n\n";
Run Code Online (Sandbox Code Playgroud)
Mar*_*lis 11
$而@被称为印记:听到什么印记告诉你
当你看到$你正在处理一件事.当你看到@你有一系列的东西.
@array[ 1 ]是一个切片,列表中包含选定元素的@array列表.你只在这个切片中放了一个元素,第二个元素@array,但无论如何它都是一个列表.
$array[ 1 ] 是列表的第二个元素,单个值,标量.
@hash{ 'one', 'two' }是另一种切片:这次我们切片哈希(%hash),获得一个列表,其中的值对应于键one和two.
差异在哪里?虽然差异很小,但是当您需要单个值时,应避免使用单个元素切片.请记住,在表达式的右侧,单个元素切片的行为类似于标量,但当它们位于表达式的左侧时,它们将成为列表赋值:它们为表达式提供列表上下文.
如果您对标量和列表上下文之间的区别感到不舒服,请不要使用单个元素切片以避免在某些情况下出现意外结果(例如使用行输入操作符时< >).
检查文档和快乐的Perl.