gpt4 book ai didi

perl - 单个字符串中对象返回的 HASH 元素

转载 作者:行者123 更新时间:2023-12-01 07:54:52 26 4
gpt4 key购买 nike

我有一个模块 模块.pm 带功能getHash()如您所料,它返回数据的哈希值))。我们都知道如何使用标准模型获得散列形式的元素:

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 %hash并获取该哈希的一个元素。

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

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}

关于perl - 单个字符串中对象返回的 HASH 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31121122/

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