Несколько компонентов в срезе массива - эквивалент perl5: @a [0..1,3] - PullRequest
0 голосов
/ 03 октября 2018

Очень простой вопрос, но я не могу найти ничего о нескольких диапазонах в документах.

Как выбрать несколько диапазонов из массива 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 ]

0 голосов
/ 03 октября 2018

В Perl 6 0..1 приводит к одному элементу, который является диапазоном.В Perl 5 0..1 сразу расширяется до двух чисел.

Одна из моих самых распространенных ошибок в Perl 6 - забыть сгладить вещи.Положительным моментом является то, что в Perl 6 мы в основном получаем эквивалент ссылок Perl 5 бесплатно, что устраняет много беспорядочных ссылок и разыменований.

0 голосов
/ 03 октября 2018

Ваш вопрос немного сбивает с толку, но, если вы только что получили опечатки или еще что-то, я попытаюсь угадать, что вы спрашиваете.

Это простой массив:

> my @a = "a", "b', "c", "d";
[a b c d]

Это делает анонимный массив из Range из 0..1 и 3:

> @[0..1,3];
[0..1 3]

Если вы хотите, чтобы он извлекал значения из массива @a, вы должны обратиться кit:

> @a[0..1,3];
((a b) d)

извлекает биты, которые вы запрашивали у @a - Первый элемент - это 0..1 части @a, (a,b) - (Не уверен, почему вы хотите увидетьc здесь ..)

Это вложенный список - два запрашиваемых вами бита включают список в первом поле и значение d, которое вы запрашивали во втором поле.

Если вы хотите, чтобы он выровнялся вместо вложенного, вы можете использовать .flat:

> @a[0..1,3].flat;
(a b d)
...