Несколько компонентов в срезе массива - эквивалент perl5: @a[0..1,3]
Очень простой вопрос, но я не могу найти что-нибудь о нескольких диапазонах в документах.
Как выбрать несколько диапазонов из массива perl6?
my @a = "a","b","c","d";
@a[0..1,3] # expecting array with a, b & d as p5
Кажется, это возвращает своего рода вложенный список, каков синтаксис Perl 6 для получения результата, который можно получить в Perl 5 (то есть массив с a
, b
& d
)?
2 ответа
Ваш вопрос немного сбивает с толку, но, если вы только что опечатки или что-то еще, я постараюсь угадать, что вы спрашиваете.
Это делает простой массив:
> my @a = "a", "b', "c", "d";
[a b c d]
Это делает анонимный массив Range
от 0..1
и 3:
> @[0..1,3];
[0..1 3]
Если вы хотите, чтобы вытащить значения из @a
массив, вы должны обратиться к нему:
> @a[0..1,3];
((a b) d)
тянет биты, которые вы просили от @a
- Первым элементом является 0..1
части @a
, (a,b)
- (Не уверен, почему ты хочешь увидеть c
здесь..)
Это вложенный список - два запрашиваемых бита включают список в первом поле и значение d
Вы просили во втором поле.
Если вы хотите, чтобы он выровнялся вместо вложенного, вы можете использовать .flat
:
> @a[0..1,3].flat;
(a b d)
В Perl 6 0..1
приводит к одному элементу, который является диапазоном. В Perl 5 0..1
сразу расширяется в два числа.
Одна из моих самых распространенных ошибок в Perl 6 - забыть сгладить ситуацию. Положительным моментом является то, что в Perl 6 мы в основном получаем эквивалент ссылок Perl 5 бесплатно, что устраняет много беспорядочных ссылок и разыменований.