Как я могу объявить и создать переменную типа "массив массива" в Perl 6? В документации Perl 6 об этом ничего не сказано. Теоретически я могу это сделать
@@var1
но это не работает.
Как я могу объявить и создать переменную типа "массив массива" в Perl 6? В документации Perl 6 об этом ничего не сказано. Теоретически я могу это сделать
@@var1
но это не работает.
Как и любое другое ограничение типа, просто поставьте 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;
Насколько мне известно, правильные многомерные массивы, объявленные как
my @multi-dim-array[5;6];
еще не реализованы в Ракудо, но должны появиться до Рождества.
my Array @array-of-arrays;
и my @array-of-arrays;
?
- person アレックス; 23.10.2015
say (my @).WHAT
vs say (my Array @).WHAT
- первый имеет тип Array
, последний имеет тип Array[Array]
, то есть массив, который принимает только другие массивы в качестве элементов
- person Christoph; 23.10.2015
my Array[Array] @a
, но типизированные массивы не очень удобны для использования в Perl6, поскольку они типизированы номинально, а не структурно; чтобы добавить к @a
, вам нужно будет сделать что-то вроде @a[0] = (my Array @ = [])
; часто более прагматично оставлять массивы нетипизированными, но есть заметные исключения (например, массивы с исходной типизацией)
- person Christoph; 23.10.2015
my Array of Int @i;
- person Nikodemus RIP; 16.12.2017
my @array; @array[0][0] = 1
- person Brad Gilbert   schedule 24.10.2015