Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos

Introspección de objetos

En la sección sobre contenedores usaste .^name para preguntarle a un valor por su tipo. Esas mismas metallamadas .^ te permiten inspeccionar una clase y sus objetos: sus nombres, sus atributos y su lugar en una jerarquía.

El metamétodo .^name devuelve el nombre de la clase:

class Dog {
    has Str $.name;
    method bark { 'Woof' }
}

say Dog.^name; # Dog

El metamétodo .^attributes enumera los atributos de la clase. Cada uno se muestra con su tipo y su nombre privado interno (la forma $! que conociste con los atributos privados):

say Dog.^attributes; # (Str $!name)

La introspección es útil para las herramientas que trabajan con objetos de forma genérica, por ejemplo para imprimir todos los atributos de un objeto sin conocer de antemano su clase. El tema siguiente examina cómo ver la cadena de herencia de una clase.

También en esta sección

Práctica

Resuelve 1 cuestionario sobre el contenido de esta sección.

Ejercicios

Esta sección contiene 2 ejercicios. Mira todos los temas de esta sección antes de empezar los ejercicios.

  1. Describa una clase
  2. Cuente los atributos

Solución: Un robot que baila   |   La cadena de herencia