Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Определить размер анонимного массива


Автор: Aster!x 2.3.2005, 04:03
Здравствуйте!

В perl имеется массив массивов:

@sign = ([0x9C,0x60,0xEB,0x2B],
[0x60,0x33,0xC0,0x75,0x02,0xEB,0x15]);

Как можно определить размер массива $sign[$i], т.е. любого из
анонимных массивов входящих в @sign ??

подобно как для массива @sign его можно вычислить как $#sign+1

Автор: Aster!x 2.3.2005, 07:15
Чисто интуитивно нашел что можно сделать так $#{$sign[$i]}+1

Автор: GoodBoy 2.3.2005, 11:13
Aster!x
Или вот так: scalar(@{$sign[$i]}) или так: $len = @{$sign[$i]}.

Твоё решение правильное, но тут важно понимать, что ты вычисляешь.

Приведённый тобой массив - это не массив массивов, а массив ссылок на массивы! И вызвав $sign[$i] ты получаешь ссылку на массив. Для получения массива тебе нужно её разыменовать: @{$sign[$i]}, а вот теперь, по правилу работы с массивами, ты можешь получить индекс его последнего элемента $#{$sign[$i]}, ну и соответственно прибавив 1 (т. к. индексация начинается с 0) получаем его длинну.
:-))))

Автор: Aster!x 2.3.2005, 12:35
GoodBoy

Спасибо за развернутый ответ.

> но тут важно понимать, что ты вычисляешь

Я понимаю.

Но вот два других способа не знал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)