gpt4 book ai didi

arrays - 如何在 Perl 中创建一个哈希数组并遍历它们?

转载 作者:行者123 更新时间:2023-12-03 18:08:05 24 4
gpt4 key购买 nike

我正在尝试创建一个哈希数组,但在遍历数组时遇到问题。我试过这段代码,但它不起作用:

for  ($i = 0; $i<@pattern; $i++){
while(($k, $v)= each $pattern[$i]){
debug(" $k: $v");
}
}

最佳答案

首先,你为什么不use ing strictwarnings ?以下几行应该在您创建的每个 Perl 程序的顶部,紧跟在 #!/usr/bin/perl 之后.总是。

use strict;
use warnings;

我知道你不是因为我很确定你会从 strict 中得到一些很好的错误消息和 warnings从这个,以及从你的代码中的许多其他地方,根据你的变量使用来判断。

其次,你为什么不这样做:
for my $i (@pattern) {
..
}

循环遍历 @pattern 中的每个元素,将它们分配给 $i一次一个。然后,在你的循环中,当你想要一个特定的元素时,只需使用 $i .更改为 $i将反射(reflect)在 @pattern , 当循环退出时, $i将超出范围,基本上是在自己清理之后。

第三,为了Larry Wall的爱,请用 my声明你的变量将它们本地化。这真的没有那么难,它会让你成为一个更好的人,我保证。

第四,也是最后,你的数组存储对散列的引用,而不是散列。如果他们存储散列,您的代码将是错误的,因为散列以 % 开头。 ,不是 $ .实际上,引用(任何类型的)都是标量值,因此以 $ 开头。 .所以我们需要解引用它们来获得哈希值:
for my $i (@pattern) {
while(my($k, $v) = each %{$i}) {
debug(" $k: $v");
}
}

或者,你的方式:
for  (my $i = 0; $i<@pattern; $i++) { # added a my() for good measure
while(my($k, $v) = each %{$pattern[$i]}) {
debug(" $k: $v");
}
}

关于arrays - 如何在 Perl 中创建一个哈希数组并遍历它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1320897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com