加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 来自对象的HASH元素在单个字符串中返回

发布时间:2020-12-16 06:07:11 所属栏目:大数据 来源:网络整理
导读:我有一个带有函数getHash()的模块Module.pm,正如您所猜测的那样,返回数据的散列)).我们都知道如何使用标准模型获取哈希的元素形式: use Module;my $m = new Module;my %hash = $m-getHash();print $hash{needed_element's_key}; 一切都好. 但是,如果你需要
我有一个带有函数getHash()的模块Module.pm,正如您所猜测的那样,返回数据的散列)).我们都知道如何使用标准模型获取哈希的元素形式:

use Module;
my $m = new Module;
my %hash = $m->getHash();
print $hash{needed_element's_key};

一切都好.
但是,如果你需要在单个字符串中写两个最后的字符串而没有初始化一个新的HASH(并且只使用一个元素占用整个哈希的内存)呢?

有可能以某种方式这样做吗?比如说,$m-> getHash() – > {needed_element’s_key};
当然,给定的例子不起作用.
有什么建议?
谢谢!

解决方法

无法返回哈希值. Subs只能返回标量列表.您将该标量列表分配给现有哈希my%哈希并获取该哈希的元素.

您可以通过使用匿名哈希来伪装您正在创建新哈希的事实:

my $val = { $m->getKeyValPairs() }->{$key};

或者,自定义过滤器可能更有效:

sub find_val {
   my $target_key = shift;
   while (@_) {
      my $key = shift;
      my $val = shift;
      return $val if $key eq $target_key;
   }

   return undef;
}

my $val = find_val $key,$m->getKeyValPairs();

但最好的选择是让方法返回对哈希的引用.然后,您不必执行创建哈希的浪费活动.你只需使用以下内容:

$m->getHashRef()->{$key}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读