2015-10-23 2 views
3

Как я могу объявить и создать переменную типа «массив массива» в Perl 6? В документации Perl 6 нет ничего об этом. Теоретически я могу это сделатьМассив переменной массива в Perl 6

@@var1 

но это не работает.

+0

Вы хотите объявить массив массивов или многомерный массив? – Christoph

+0

Вам не нужно указывать, из чего состоит внешний массив. 'мой @array; @array [0] [0] = 1' –

+0

@BradGilbert, Кристоф сказал, что я должен. –

ответ

5

Так же, как и любой другой тип ограничения, просто положить Array перед его именем при объявлении его:

my Array @array-of-arrays; 

Теперь вы можете присвоить массив как элемент

@array-of-arrays[42] = [1, 2, 3]; 

или сделать использование авто-вивификации

@array-of-arrays[1][2] = 42; 

Вы также можете выбрать более либеральные Positional как его тип элемента, но это сломало бы самовоспроизводство.

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

@array-of-arrays[1;2] = 42; 

Насколько мне известно, собственно multi-dimensional arrays объявлен

my @multi-dim-array[5;6]; 

еще не реализованы в Ракудо, но они должны прибыть до Рождества.

+0

В чем разница между 'my Array @ array-of-arrays' и' my @ array-of-arrays'?? –

+1

check out 'say (my @). WHAT' vs' say (my Array @). WHAT' - первый имеет тип 'Array', последний имеет тип' Array [Array] ', то есть массив, который принимает только другие массивы как элементы – Christoph

+0

и как насчет массива массива массива? –