我在一段代码中看到了这个:
if (some_condition) {
$index++;
}
$index{$some_variable} = $index{$some_variable} + 1;
$index{$some_variable}
是什么意思?为什么要使用它?
谢谢。
编辑: 索引定义为$index=0;
我在一段代码中看到了这个:
if (some_condition) {
$index++;
}
$index{$some_variable} = $index{$some_variable} + 1;
$index{$some_variable}
是什么意思?为什么要使用它?
谢谢。
编辑: 索引定义为$index=0;
它使用其值是$some_variable
(注价值的关键检索在%index
散列的条目:也有可能存在一个名为$index
标量,但它将占用一个单独的命名空间,也就是说,你可以同时拥有一个散列和一个名为index
的标量,它们不会发生冲突。)
Perl有几个命名空间
$var
是一个标量变量@var
是一个数组变量,并$var[$i]
是数组的一个元素。%var
是一个散列变量,而$var{$i}
是该散列的一个元素。如果此代码编写正确,你将有上面这几行:
use strict;
use warnings;
my $index;
my %index;
if (some_condition) {
$index++;
}
$index{$some_variable} = $index{$some_variable} + 1;
$index{$some_variable}
指的是哈希,并$index
一个标。在perl中,这是完全有效的,并且%index
和$index
将被认为是两个不同的变量。
这也是使用严格来说如此重要的原因。 Why use strict and warnings?
您可能会感兴趣perldata对您有所帮助。
$index++;
声明中的$index
是一个标量。这与它后面的陈述无关。
$index{$some_variable}
是散列的一部分,%index
。哈希(或关联数组)由一对或多对组成,每对由一个键和一个值组成。该密钥用于访问值:
my %hash = (key_A => value_A, # Here $hash{key_A} accesses 'value_A'
key_B => value_B, # ... $hash{key_B} gives 'value_B'
key_Z => value_Z ); # 'value_Z' returned by $hash{key_Z}
判断$index{$some_variable} = $index{$some_variable} + 1;
,的$index{$some_variable}
值被访问时,递增一,并重新分配给相同的密钥。
请参阅perldoc perlintro
,以便对Perl中的变量类型进行温和的介绍,而对于更复杂的数据结构,请参见perldoc perldsc
。
但是索引被定义为像$ index = 0; – infinitloop
但是也会有'%index'的赋值,'$ index'是一个标量,'%index'是一个散列,它们是两个不同的变量。当访问标量哈希中的条目时,可以使用'$ index {$ myentry}'。 –