【问题标题】:Create schedule as a 2D array perl将计划创建为 2D 数组 perl
【发布时间】:2012-09-09 19:01:23
【问题描述】:

我正在尝试在 Perl 中初始化一个基本上是一个时间表的二维数组。所以它看起来像这样:

Time     Mon   Tue   Wed   Thu   Fri
09:00     0     0     0     0     0  
10:00     0     0     0     0     0 
11:00     0     0     0     0     0 
12:00     0     0     0     0     0 
13:00     0     0     0     0     0 
14:00     0     0     0     0     0 
15:00     0     0     0     0     0 
16:00     0     0     0     0     0
17:00     0     0     0     0     0 
18:00     0     0     0     0     0 
19:00     0     0     0     0     0 
20:00     0     0     0     0     0 

我在 Perl 中阅读了一些关于 2D 数组的文章,但我仍然感到困惑。最简单的方法是什么?请解释一下,以便我了解发生了什么。

【问题讨论】:

  • 你想如何索引二维数组?

标签: arrays perl multidimensional-array


【解决方案1】:

看看perllol。它是 Perl 中列表列表的最佳文档

本质上,Perl 数组的每个元素都可以是任何标量值——字符串或数字,或者更奇特的东西,例如子例程引用或文件句柄引用。要创建一个二维数组,您需要一个数组数组,因此基本数组的每个元素都需要是一个数组引用

[...] 构造创建一个匿名数组并返回对它的引用。 anonymous 部分只是意味着它没有像@data 那样附加标识符,但它存在于内存中,可以通过其引用访问

通过引用访问数组元素的语法是,例如,$array_ref->[0] 表示第一个元素。所以如果我写

my $array_ref = [ '09:00', 0, 0, 0, 0, 0 ];
print $array_ref->[0];

我会看到09:00 输出

对于你的数据,你可以写

my @data = (
  [ '09:00', 0, 0, 0, 0, 0 ],
  [ '10:00', 0, 0, 0, 0, 0 ],
  [ '11:00', 0, 0, 0, 0, 0 ],
  [ '12:00', 0, 0, 0, 0, 0 ],
  [ '13:00', 0, 0, 0, 0, 0 ],
  [ '14:00', 0, 0, 0, 0, 0 ],
  [ '15:00', 0, 0, 0, 0, 0 ],
  [ '16:00', 0, 0, 0, 0, 0 ],
  [ '17:00', 0, 0, 0, 0, 0 ],
  [ '18:00', 0, 0, 0, 0, 0 ],
  [ '19:00', 0, 0, 0, 0, 0 ],
  [ '20:00', 0, 0, 0, 0, 0 ],
);

所以$data[0] 是对保存第一行数据的(匿名)数组的引用,$data[0]->[0]'09:00'

此外,还有一个语法工具允许省略任何一对右括号和左括号之间的箭头,因此$data[0]->[0]可以写成$data[0][0],含义完全相同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多