Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos / Atributos
Atributos de lectura y escritura
Por omisión, el accesor creado por has $.name es de
solo lectura. El valor se inicializa en el constructor y
después puedes leerlo, pero no cambiarlo desde fuera del objeto.
Asignarle algo es un error:
class Dog {
has $.name;
}
my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';El programa se detiene con:
Cannot modify an immutable Str (Rex)Para permitir que el valor cambie a través del accesor, marca el
atributo con el rasgo is rw:
class Dog {
has $.name is rw;
}
my $rex = Dog.new(name => 'Rex');
$rex.name = 'Max';
say $rex.name; # MaxAhora el accesor devuelve un contenedor escribible, así que la
asignación funciona y el name del objeto pasa a ser
Max.
Navegación del curso
← Atributos | Valores por defecto →
💪 O ve directamente a
los ejercicios de esta sección.