| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 Спасибо за развернутый ответ. > но тут важно понимать, что ты вычисляешь Я понимаю. Но вот два других способа не знал. |