您如何正确处理数组中的哈希?

混乱

我有一系列的哈希值:

my @questions = (
    {"Why do you study here?" => "bla"},
    {"What are your hobbies?" => "blabla"});

我尝试遍历它:

foreach (@questions) {
    my $key = (keys $_)[0];
    $content .= "\\section{$key}\n\n$_{$key}\n\n";
}

给我

在convert.pl第44行的串联(。)或字符串中使用未初始化的值。

错误从何而来?

这是黑色的

Gilles已经解释了如何使用当前数据结构,但是我建议您完全使用其他数据结构:简单的哈希。

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

my %answers = (
    "Why do you study here?" => "bla",
    "What are your hobbies?" => "blabla"
);

while (my ($question, $answer) = each %answers) {
    say "Question: $question";
    say "Answer: $answer";
}

输出:

Question: Why do you study here?
Answer: bla
Question: What are your hobbies?
Answer: blabla

我发现这比散列数组更容易使用,每个散列只包含一个键/值对。

如果要按特定(未排序)顺序遍历哈希,则有两个选项。简单的解决方案是按要访问的键顺序维护键数组:

# In the order you want to access them
my @questions = ("What are your hobbies?", "Why do you study here?");

my %answers;
@answers{@questions} = ("blabla", "bla");

foreach my $question (@questions) {
    say "Question: $question";
    say "Answer: $answers{$question}";
}

输出:

Question: What are your hobbies?
Answer: blabla
Question: Why do you study here?
Answer: bla

另一个选择是使用Tie :: IxHash(或更快的XS模块Tie :: Hash :: Indexed)以插入顺序访问密钥:

use Tie::IxHash;

tie my %answers, "Tie::IxHash";

%answers = (
    "Why do you study here?" => "bla",
    "What are your hobbies?" => "blabla"
);

while (my ($question, $answer) = each %answers) {
    say "Question: $question";
    say "Answer: $answer";
}

输出:

Question: Why do you study here?
Answer: bla
Question: What are your hobbies?
Answer: blabla

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正确处理哈希引用数组

来自分类Dev

hashlib哈希器如何正确处理输入?

来自分类Dev

如何正确处理 foreach 循环以及数组中递增的动态内容

来自分类Dev

如何正确处理httpClient?

来自分类Dev

如何正确处理scanf()

来自分类Dev

如何正确处理并发?

来自分类Dev

如何正确处理导航

来自分类Dev

如何正确处理Hystrix后备广告中的预期错误?

来自分类Dev

如何正确处理打字稿中的promisifyAll?

来自分类Dev

如何正确处理python中的可选功能

来自分类Dev

如何正确处理RDBMS中的更新/删除操作?

来自分类Dev

如何正确处理卵石中的APP_MSG_BUSY?

来自分类Dev

如何正确处理嵌套片段中的MaskedWallet响应

来自分类Dev

如何正确处理NSTextField中的<Return> +修饰键?

来自分类Dev

如何正确处理过程宏中的跨度?

来自分类Dev

如何正确处理打字稿中的范围

来自分类Dev

如何正确处理ZeroMQ.js中的连接超时?

来自分类Dev

如何正确处理Python中的浮点运算?

来自分类Dev

如何正确处理PL SQL中的触发器?

来自分类Dev

如何确定Outlook中的ContactItem是否显示(正确处理)

来自分类Dev

如何正确处理我的servlet中的异常

来自分类Dev

如何正确处理卵石中的APP_MSG_BUSY?

来自分类Dev

如何正确处理Python时钟中的累加器?

来自分类Dev

如何正确处理过程宏中的跨度?

来自分类Dev

如何正确处理JSON文件中的更改?

来自分类Dev

如何正确处理 VBA 中的 FollowHyperlink 错误?

来自分类Dev

Flask下的fork如何正确处理?

来自分类Dev

如何正确处理Visual Studio关闭?

来自分类Dev

OCaml:如何正确处理总和类型?