Curso de Raku / Apéndice 🆕 / Tipos y máquinas de texto / Objetos y clases / Exercises / Una clase pila

Solución: Una clase pila

Aquí tienes una posible solución para la tarea.

Código

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;

🦋 Puedes encontrar el código fuente en el archivo stack.raku.

Salida

3
3
2

Comentarios

  1. @!items es un atributo privado: el tigilo ! significa que solo se alcanza desde dentro de la clase, que es exactamente lo que debería ser el almacenamiento de una pila.

  2. peek usa .tail para mirar el último elemento sin quitarlo, mientras que pop sí lo saca, así que el tamaño baja de 3 a 2.

Una clase pila   |   Una cuenta bancaria