1 } %hJobT; print-6ren">
gpt4 book ai didi

perl - 为什么将 '1' 映射到 perl 中的散列?

转载 作者:行者123 更新时间:2023-12-01 16:19:32 26 4
gpt4 key购买 nike

我有一些这样的代码:

print "key $_ - $hJobT{$_}\n" foreach keys %hJobT;
%hJobT = map { $_ => 1 } %hJobT;
print "key $_ - $hJobT{$_}\n" foreach keys %hJobT;

当我运行程序并打印我得到的结果时:

key office - 1
key recon - 1
key office - 1
key 1 - 1
key recon - 1

前两个结果来自第一个打印语句并且是预期的。

key 1 - 1 部分不是预期的。

为了澄清 - 代码处于循环中,随着它的迭代,键值在某些条件下会增加。出于测试目的,我在循环末尾放置了一个退出语句,因此它只显示第一次迭代结果,因此它们是“1”。 (只是这样看起来我似乎没有毫无意义地将 1 映射到 1。)关于为什么我得到 1-1 映射的任何想法?

最佳答案

散列是一个偶值列表。因此,在列表上下文中使用它时,您将获得所有这些键和值:

@list = qw(a b);
%hash = @list; # valid!
@list = %hash; # valid, but bad style. And the ordering may change

因此,当您将散列用作 map 的参数时,您创建了以下列表:

(
office => 1,
1 => 1,
recon => 1,
1 => 1
)

因为 map 看见了

("office", 1, "recon", 1)

因为它是列表参数。

关于perl - 为什么将 '1' 映射到 perl 中的散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12748048/

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