2014-01-25 3 views
0

У меня есть переменная, которая может быть либо массивом, либо матрицей (потому что матрица с одной строкой преобразуется в массив). Что я могу использовать для доступа к элементам, является ли переменная массивом или матрицей?Perl: Получение элемента в массиве или матрице

Пример:

v = [[1,2,3]]; 
v[0][0] gives an error; 
v = [[1,2,3],[4,5,6]]; 
v[0][0] gives 1; 
+6

Вы могли бы показать * фактический код *? Это не Perl, поскольку переменные имели бы сигилы и т. Д. Невозможно сказать, почему одна строка дает ошибку, а другая - нет, если мы не можем видеть фактический код. – amon

ответ

4

В Perl, вот один из способов, который даст доступ к обоим:

use strict; 
use warnings; 

my $v = [ [ 1, 2, 3 ] ]; 
print $v->[0][0], "\n"; # prints 1 

$v = [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]; 
print $v->[1][0], "\n"; # prints 4 

[ ... ] создает анонимный массив, а ссылку на этот массив возвращается, когда она оценивается - как в задании $v = или в другом [ ... ]. Оба заявления печати показывают результаты разыменования дважды, и могли быть написаны как:

print $v->[0]->[0], "\n"; # prints 1 

Там нет никакой разницы между этими двумя данными структурой; второй, однако, имеет больше данных.

Надеюсь, это поможет!

Смежные вопросы