Как я могу создать многомерные массивы в Perl?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

18
задан Josh Crozier 8 December 2015 в 01:53
поделиться

5 ответов

Для создания массива массивов или более точно массива arrayrefs попробуйте что-то вроде этого:

my @array = ();
foreach my $i ( 0 .. 10 ) {
  foreach my $j ( 0 .. 10 ) {
    push @{ $array[$i] }, $j;
  }
}

Это продвигает значение на разыменованный arrayref для Вас. Необходимо смочь получить доступ к записи как это:

print $array[3][2];
27
ответ дан 30 November 2019 в 06:51
поделиться

Взгляните на perlref и perldsc, чтобы видеть, как сделать вложенные структуры данных, как массивы массивов и хеши хешей. Очень полезный материал, когда Вы делаете Perl.

6
ответ дан 30 November 2019 в 06:51
поделиться

Измените свою строку "нажатия" на это:

push(@{$array2d[$i]}, $_);

Вы в основном делаете $array2d [$i] массив путем окружения его {}... Вы затем можете продвинуть элементы на этот массив ссылок на массив.

8
ответ дан 30 November 2019 в 06:51
поделиться

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

$two_dimensional_array{"$i $j"} = $val;
0
ответ дан 30 November 2019 в 06:51
поделиться

Нет действительно никакого различия между тем, что Вы записали и это:

@{$array2d[$i]} = <FILE>;

я могу только предположить, что Вы выполняете итерации через файлы.

, Чтобы постараться не отслеживать счетчик, Вы могли сделать это:

...
push @array2d, [ <FILE> ];
...

, Который говорит 1) создают ссылку на пустой массив, 2) что хранение всех строк в ФАЙЛЕ, 3) продвигают его на @array2d.

3
ответ дан 30 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: