【发布时间】:2014-07-31 15:15:49
【问题描述】:
如何在不创建临时数组的情况下访问哈希中键的最后一个元素?
我知道哈希是无序的。但是,有一些应用程序(比如我的),可以使用对哈希键的简单sort 调用来订购我的键。希望我已经解释了为什么我想要这个。我承认,barney/elmo 的例子是一个糟糕的选择,但它确实有它的应用。
考虑以下几点:
my %hash = ( barney => 'dinosaur', elmo => 'monster' );
my @array = sort keys %hash;
print $array[$#{$hash}];
#prints "elmo"
关于如何在不调用临时(在这种情况下为@array)的情况下执行此操作的任何想法?
【问题讨论】:
-
所以你实际上要做一个 (sort { $a cmp $b } keys %hash)[-1] ?
-
您的编辑没有提供太多说明。当然,您可以对哈希键列表进行排序,但您不会在此处显示。我可以想象在排序后想要最后一个键,但我想不出一个很好的理由之前想要它,这就是你的代码似乎试图做的事情。
-
无论你做什么,或者你怎么做,你总是会创建一个数组。这只是你是否保持对它的句柄的问题。