Достаточно легко найти максимальное значение в списке в Perl 6:
> my @list = 1,4,9,7,3;
> say @list.max;
9
Но если я хочу найти индекс максимальной записи, не кажется, что это элегантный способ сделать это.
> say (^@list).sort({ [email protected][$_] })[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
).