在Perl 6中找到列表中的最大值很容易:
> my @list = 1,4,9,7,3;
> say @list.max;
9
但如果我想找到 指数 最大入口,似乎没有一种优雅的方式来做到这一点。
> say (^@list).sort({ -@list[$_] })[0];
2
> say @list.pairs.sort(*.value).tail.key;
2
> say @list.first(@list.max, :k);
2
这些都是有效的,但它们并不优雅,更不用说高效了。
有一个更好的方法吗?
如果,那会很好 max
有 :k
, :v
和 :kv
选项,比如说 first
具有。
当然,可能没有 是 一个独特的索引(例如,在...的情况下) (1,4,9,7,9).max
,但话又说回来,可能没有一个独特的 值 之一:
> dd (1, 2.0, 2.0e0, 2).max;
2.0
> say <the quick brown fox>.max(*.chars);
quick
max
已经检索到了 第一 最大值,所以返回第一个是完全合理的 指数 同 :k
(要么 :kv
)。