Tengo una clase con atributos. Quiero verificar si algunos pero no todos están definidos. Entonces:
class A {
has $.a is rw;
has $.b is rw;
has $.c is rw;
has $.d is rw;
method delete { ... }
}
my A $x .= new(:a<hi>, :d<good>);
## later
$x.b = 'there';
## code in which $x.c may or may not be defined.
## now I want to check if the attributes a, b, and c are defined, without
## needing to know about d
my Bool $taint = False;
for <a b c> {
$taint &&= $x.$_.defined
}
Esto causará errores porque un objeto de tipo A no tiene un método 'CALL-ME' para la cadena de tipo.
¿Existe un método de introspección que me dé los valores de los atributos de una clase?
$x.^attributes
me da sus nombres y tipos, pero no sus valores.
Creo que debe haber alguna forma desde entonces dd
o .perl
proporcionar valores de atributo, creo.
class
raku
introspection
Richard Hainsworth
fuente
fuente
is rw
rasgo a la clase.Respuestas:
Si, se llama
get_value
. Necesita que se le pase el objeto del atributo. Por ejemplo:fuente