Курс Raku / Додаток 🆕 / Типи та текстові машини / Об’єкти та класи / Вправи / Клас стека

Розв’язання: Клас стека

Ось одне з можливих розв’язань задачі.

Код

class Stack {
    has @!items;

    method push($x) { @!items.push($x) }
    method pop      { @!items.pop }
    method peek     { @!items.tail }
    method size     { @!items.elems }
}

my $stack = Stack.new;
$stack.push($_) for 1, 2, 3;

say $stack.peek;
say $stack.pop;
say $stack.size;

🦋 Знайдіть програму у файлі stack.raku.

Вивід

3
3
2

Коментарі

  1. @!items є приватним атрибутом — тайгл ! означає, що дістатися до нього можна лише зсередини класу, а саме таким і має бути сховище стека.

  2. peek використовує .tail, щоб подивитися на останній елемент, не знімаючи його, тоді як pop справді його забирає, тож розмір падає з 3 до 2.

Навігація курсом

Клас стека   |   Банківський рахунок