【发布时间】:2011-12-28 22:33:43
【问题描述】:
我在一段代码中看到了这一点:
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;
【问题讨论】:
如果此代码编写正确,您将在其上方有以下几行:
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 将被视为两个不同的变量。
这也是使用 strict 如此重要的一个原因。 Why use strict and warnings?
【讨论】:
%index 应该命名为 %indices 或更有意义的名称。
for my $lookup ( keys %indices ) { ... say $indices{$lookup}; } 之类的东西,并且想知道改用 %index 是否会更好。
index_group 或…… :) (日文没有真正的复数,很多时候“复数”是通过加“tachi”(组)形成的一句话。)
它正在使用值为$some_variable 的键检索%index 哈希中的条目
(注意:可能还存在一个名为$index 的标量,但它会占用一个单独的命名空间。也就是说,您可以同时拥有一个哈希和一个名为index 的标量,它们不会冲突。)
【讨论】:
%index 赋值,$index 是一个标量,%index 是一个哈希值,它们是两个不同的变量。访问标量哈希中的条目时,您使用$index{$myentry}。
Perl 有几个命名空间
$var 是一个标量变量@var 是一个数组变量,$var[$i] 是该数组的一个元素。%var 是一个哈希变量,$var{$i} 是该哈希的一个元素。【讨论】:
$index++; 语句中的$index 是一个标量。它与它后面的$index{$some_variable} 语句无关。
$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 了解更复杂的数据结构。
【讨论】:
您可能会发现perldata 很有帮助。
【讨论】: