Подтвердить что ты не робот

Как доллар и число подписывают вместе в perl?

Сегодня я столкнулся с проблемой, которая потребовала от меня определения максимального индекса массива в perl. Я делал это так:

my @array = (1, 2, 3);
print $array[@array - 1];

Но сегодня я наткнулся на этот код:

my @array = (1, 2, 3);
print $array[$#array];

Я не мог найти ничего в этом вопросе в документах. В чем именно заключается конструкция $#? Это оператор? И как это работает, это быстрее, чем первая часть кода? Всегда ли он возвращает максимальный индекс массива? Это устарело или нет?

Я знаю, что много вопросов, но все они могут быть суммированы одним и что я действительно хочу знать: Как это работает?

4b9b3361

Ответ 1

Это описано в perldoc perldata, раздел "Скалярные значения" . Короче говоря, $#array - последний индекс @array. Что касается того, как это работает - это похоже на оператор, но только тегами $ и @ являются операторы. Подумайте об этом как о специальном синтаксисе. Последний индекс массива просто имеет значение "иметь имя". Это переменная, которую вы можете читать и назначать.

Ответ 2

Использование упоминается в первом примере в perldata. Он обозначает индекс последнего элемента в массиве.

Btw, вы также можете использовать

$array[-1]

чтобы получить последний элемент.