【问题标题】:What does this mean in perl $variable_one{$variable_two} and what is it called?这在 perl $variable_one{$variable_two} 中是什么意思,它叫什么?
【发布时间】:2011-12-28 22:33:43
【问题描述】:

我在一段代码中看到了这一点:

if (some_condition) {  
 $index++;  
}  
$index{$some_variable} = $index{$some_variable} + 1; 

$index{$some_variable} 是什么意思?为什么要使用它?

谢谢。

编辑: 索引定义为$index=0;

【问题讨论】:

    标签: perl scalar


    【解决方案1】:

    如果此代码编写正确,您将在其上方有以下几行:

    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 或更有意义的名称。
    • @DVK :我不太确定复数形式。我经常发现自己在写 for my $lookup ( keys %indices ) { ... say $indices{$lookup}; } 之类的东西,并且想知道改用 %index 是否会更好。
    • @Zaid: 那就走日文的路,用index_group 或…… :) (日文没有真正的复数,很多时候“复数”是通过加“tachi”(组)形成的一句话。)
    • @DVK 对于它的价值,Damian (PBP) 建议以单数形式命名散列,因为它是通常一次访问的一个元素。
    • @Zaid,在我看来,包含集合的哈希应该是复数(%fields),代表一个对象的哈希(%record)应该是单数
    【解决方案2】:

    它正在使用值为$some_variable 的键检索%index 哈希中的条目

    (注意:可能还存在一个名为$index 的标量,但它会占用一个单独的命名空间。也就是说,您可以同时拥有一个哈希和一个名为index 的标量,它们不会冲突。)

    【讨论】:

    • 但是索引的定义类似于 $index = 0;
    • 但也会有一个%index 赋值,$index 是一个标量,%index 是一个哈希值,它们是两个不同的变量。访问标量哈希中的条目时,您使用$index{$myentry}
    【解决方案3】:

    Perl 有几个命名空间

    • $var 是一个标量变量
    • @var 是一个数组变量,$var[$i] 是该数组的一个元素。
    • %var 是一个哈希变量,$var{$i} 是该哈希的一个元素。

    【讨论】:

      【解决方案4】:

      $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 了解更复杂的数据结构。

      【讨论】:

        【解决方案5】:

        您可能会发现perldata 很有帮助。

        【讨论】:

          猜你喜欢
          • 2018-05-07
          • 2018-03-05
          • 1970-01-01
          • 2010-12-28
          • 1970-01-01
          • 2023-03-25
          • 1970-01-01
          • 2020-05-21
          • 1970-01-01
          相关资源
          最近更新 更多