gpt4 book ai didi

arrays - Perl 中的 {} 和 ->{} 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 01:21:35 24 4
gpt4 key购买 nike

因此,如果我有一些数据对象并且我想访问该对象的元素中的内容

有什么区别

$Data{isEnabled})

$Data->{isEnabled}

我的数据基本是这样

for my $characterData (@{$AllCharacters->{'characters'}}) {
$Data{isEnabled})

$Data->{isEnabled}

我想访问我的 characterData 的某些元素,但我不确定何时使用

$Data{isEnabled})

对比

$Data->{isEnabled}

例如,为什么第一次打印有效但第二次打印失败?

use strict;
use warnings;


my %info = (NAME => "John", HOST => "Local", PORT => 80);

print $info{PORT};
print $info->{PORT};

最佳答案

第一个表达式访问散列中的键:

my %data = (is_enabled => 1);
print $data{is_enabled}), "\n";

在第二个表达式中,data 不是散列,而是*散列引用。它通常声明为:

my $data = { is_enabled => 1 };

由于这是一个引用,我们需要使用解引用运算符(->)来访问哈希内容:

print $data->{is_enabled}, "\n";

如果您正在遍历哈希数组,正如您的代码所显示的那样,那么每个元素都是一个哈希引用。您需要使用第二种语法:

my @all_data = ( { is_enabled => 1 }, { is_enabled => 0 } );
for my $data (@all_data) {
print $data->{is_enabled}, "\n";
}

您可以在 the perlref documentation page 中阅读更多关于引用文献的信息.

关于arrays - Perl 中的 {} 和 ->{} 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62565753/

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