【发布时间】:2018-10-19 09:56:23
【问题描述】:
我希望在 perl 中可以从哈希中获取数组 ref 或将 ref 哈希转换为 ref 数组!?
例如:
%trad = ('January','Jan','February','Feb');
$ref = \%trad; # made a reference on hash
$ref2 = [%{$ref}]; # convert ref hash to ref array
我们可以用其他方式写:
$ref2 = [%{\%trad}];
但是这段代码是散列上的 ref 数组的错觉,因为构造 $ref = [...] 创建了对匿名数组的引用,该数组是通过 Perl 从散列中复制元素而创建的。
您可以通过尝试填充 $ref2 指向的数组来看到这一点,这对哈希没有影响!
有没有办法通过使用真正的 ref 数组,如 C 中的强制转换方法,直接在内存区域中直接对哈希进行操作!?
【问题讨论】:
-
这听起来很像 XY 问题。你想在这里完成什么?
-
Notrhing 特别是 :-) 我们可以在很多地方看到哈希和数组几乎相似:-) 哈希是一个特殊的数组,具有特定的方法来操作其中的数据。通过为我节省内存,引用提供了以优雅的方式操作这些对象的机会。 XY问题是什么意思? :-)
-
对于 XY 问题可以:en.wikipedia.org/wiki/XY_problem。我的目标是真正知道我们是否可以在哈希上获得真正的 ref 数组...
-
不,它们在这个意义上并不相似——它们都是数据结构,但它们以不同的方式工作。您在谈论“真正的 ref 数组”这一事实意味着我认为您正在关注如何在 C 中做某事 - 而 perl 不是那样工作的。因此,为什么我要问您实际上想要完成什么。 How hashes really work
-
哈希和数组是完全不同的数据结构。 C 风格的演员阵容完全没用。在 Perl 或 C 中。
标签: arrays perl hash casting reference