Eu tenho uma classe com atributos. Quero verificar se alguns, mas nem todos, estão definidos. Assim:
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
}
Isso causará erros porque um objeto do tipo A não possui o método 'CALL-ME' para o tipo string.
Existe um método de introspecção que me fornece os valores dos atributos de uma classe?
$x.^attributes
me dá seus nomes e tipos, mas não seus valores.
Eu acho que deve haver alguma maneira desde dd
ou .perl
fornecer valores de atributo - eu acho.
class
raku
introspection
Richard Hainsworth
fonte
fonte
is rw
característica à classe.Respostas:
Sim, é chamado
get_value
. Ele precisa do objeto do atributo passado para ele. Por exemplo:fonte