【问题标题】:Creating and Printing an Array of Coordinates in Perl在 Perl 中创建和打印坐标数组
【发布时间】:2014-03-11 18:19:32
【问题描述】:

我见过其他关于制作二维数组的问题,但其中大多数似乎是在处理数组变量中的大量数组变量。我很难跟踪他们。我想做的是拿这个:

my @array = [ [50, 1], [52, 2], [45, 3], [60, 4] ];

并且能够引用它并将其打印为二维数组(我正在使用此脚本生成一个 html 文件。)但是每当我尝试引用 @array 的长度时,它就会显示为 1。打印此数组或引用一对坐标或单个数字的正确语法是什么?

例如,我将如何引用子数组 [50, 1] 与引用“1”元素?

【问题讨论】:

    标签: html arrays perl


    【解决方案1】:

    最外面的括号[]应该是括号()。方括号 [] 为您提供了一个数组引用,您需要在数组内部拥有它,因为嵌套元素必须是 perl 中的引用。

    所以:

    my @array = ([50, 1], [52, 2], [45, 3], [60, 4]);
    print length(@array); # Should give 4.
    
    # Iterate & print
    foreach my $sub_array (@array) {
        print "a: $sub_array->[0], b: $sub_array->[1]\n";
    } 
    

    【讨论】:

    • 因此,迭代这些代码的代码类似于: foreach my @subarray (@array) { foreach my $element (@subarray) { print $element; } } ?
    • 基本思想是一个数组不能包含其他数组。它们必须是数组引用。因此,当您遍历数组引用数组时,您需要取消引用它们。查看 perldoc 上的 perl 参考教程 (perlreftut):perldoc.perl.org/perlreftut.html
    【解决方案2】:

    你可以这样做:

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    my @array = ( [50, 1], [52, 2], [45, 3], [60, 4] );
    
    print join(" ", @array) . "\n"; #prints all array references (not very useful)
    
    print join(" ", @{$array[1]}) . "\n"; # prints 52 2
    
    print ${$array[0]}[1] . "\n"; # prints 1
    

    我解释的更详细了here

    这是一个如何遍历它的示例:

    for my $arr_ref (@array) {
    
      for my $element ( @{$arr_ref} ) {
        print $element . ", "; 
      }
      print "\n";
    }
    

    输出:

    50, 1, 
    52, 2, 
    45, 3, 
    60, 4, 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多