Corso di Raku / Appendice 🆕 / Tipi e macchine per il testo / Oggetti e classi / Exercises / Una classe pila

Soluzione: Una classe pila

Ecco una possibile soluzione del compito.

Codice

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;

🦋 Trova il programma nel file stack.raku.

Output

3
3
2

Commenti

  1. @!items è un attributo privato — il twigil ! significa che è raggiungibile solo da dentro la classe, che è esattamente ciò che dovrebbe essere il magazzino di una pila.

  2. peek usa .tail per guardare l’ultimo elemento senza rimuoverlo, mentre pop lo toglie davvero, quindi la dimensione scende da 3 a 2.

Una classe pila   |   Un conto bancario