首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以链接的方式使用散列

以链接的方式使用散列
EN

Stack Overflow用户
提问于 2011-12-19 12:11:14
回答 2查看 264关注 0票数 2

以链接的方式使用散列让我很困惑。例如,我阅读了以下Perl代码,如何逐段理解它们?

代码语言:javascript
复制
$model->{result}->{forcast}->[$index]->{label}  = 1;

$Neg{$examples->{result}->[$index]->{title}} = 1

另外,为什么有些项目有$,比如$index;而其他项目没有,比如label。

$index封装在{ }中,而其他封装在{}中,这里有什么区别?

$Neg{$examples->{result}->[$index]->{title}} = 1是否等同于$Neg{$examples->{result}->[$index]->{title}} = 1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-19 12:19:39

考虑一下:

代码语言:javascript
复制
$model->{result}->{forcast}->[$index]->{label}  = 1;

->[]用于取消对数组引用的引用。

->{}用于取消对散列引用的引用。

让我们从左边开始扫描:

  • $model是散列引用(由于它在上下文中使用:$model->{})
  • result是散列键(因为它没有符号prepended)
  • $model->{result}再次是散列reference
  • $model->{result}->{forcast}是数组引用(由于它在上下文中使用:$model->{result}->{forcast}->[])
  • $index是用户设置的变量,可能包含数组的索引item
  • $model->{result}->{forcast}->[$index]是散列引用
  • label是一个哈希键,它将1设置为哈希键

的值

哈希键可以是无字的,系统会自动将其引起来。因此,将散列键指定为result'result'是相同的。

perldoc perldsc是数据结构的食谱。在查看这样的数据结构时,Data::Dumper非常有用。

票数 6
EN

Stack Overflow用户

发布于 2011-12-19 12:17:53

你不应该有像那样没有引号的纯文本散列键。这样说:

代码语言:javascript
复制
$model->{'result'}->{'forcast'}->[$index]->{'label'} = 1

因此model是一个hashref,它有一个关键字'result‘,这是一个hashref,它有一个关键字'forcast’(不会拼写?)它是一个数组引用,其在索引$index处具有散列引用,该散列引用具有被设置为1的关键字‘标签’。

在第二个中,%Neg是一个散列,它有一个键,它是嵌套散列和数组链中的“title”元素。

至于你的最后一个问题,是的,因为你把同样的东西写了两次。

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8557022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档