Курс языка программирования Raku / Продвинутый уровень / Контейнеры / Упорядоченные контейнеры

Списки

Список — это тоже упорядоченная коллекция значений, но, в отличие от массива, он неизменяем: вы не можете изменять, добавлять или удалять его элементы. Список записывается как последовательность значений, разделённых запятыми, часто заключённая в скобки:

my $colours = ('red', 'green', 'blue');

Вы можете читать элементы списка по индексу и узнавать их количество, так же как и у массива:

my $colours = ('red', 'green', 'blue');
say $colours[0];    # red
say $colours.elems; # 3

Разница проявляется, когда вы пытаетесь изменить элемент. С массивом это работает, потому что каждый элемент — это контейнер:

my @array = 1, 2, 3;
@array[0] = 10;
say @array; # [10 2 3]

Со списком это ошибка, так как элементы списка — это простые значения, а не контейнеры:

my $list = (1, 2, 3);
$list[0] = 10;

Вторая программа завершится с сообщением:

Cannot modify an immutable List ((1 2 3))
  in block <unit> at t.raku line 2

Поэтому используйте массив (сигил @), когда вам нужно менять содержимое, и список, когда вам нужна только фиксированная последовательность значений.

Практика

Пройдите 1 тест по содержанию этой темы.

Навигация по курсу

Массивы   |   Тест — Массивы и списки


💪 Или перейдите сразу к упражнениям этого раздела.