Курс 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Коментарі
@!itemsє приватним атрибутом — тайгл!означає, що дістатися до нього можна лише зсередини класу, а саме таким і має бути сховище стека.peekвикористовує.tail, щоб подивитися на останній елемент, не знімаючи його, тоді якpopсправді його забирає, тож розмір падає з3до2.