Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos / Atributos / Exercises / Una etiqueta modificable
Solución: Una etiqueta modificable
Aquí tienes una posible solución para la tarea.
Código
class Label {
has $.text is rw;
}
my $l = Label.new(text => 'draft');
$l.text ~= ' (revised)';
say $l.text;🦋 Puedes encontrar el código fuente en el archivo changeable-label.raku.
Salida
draft (revised)Comentarios
El rasgo
is rwhace que el accesor devuelva un contenedor escribible, de modo que puede aparecer a la izquierda de una asignación.Precisamente por ser escribible, el operador compuesto
~=también funciona sobre él:$l.text ~= ' (revised)'lee el texto actual, concatena el sufijo y guarda el resultado de vuelta, todo a través del mismo accesor.