gpt4 book ai didi

class - 内容检查一些(不是全部)类属性

转载 作者:行者123 更新时间:2023-12-04 08:01:39 25 4
gpt4 key购买 nike

我有一个带有属性的类。我想检查是否定义了一些但不是全部。所以:

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
}

这将导致错误,因为类型 A 的对象没有用于字符串类型的方法 'CALL-ME'。

是否有一种自省(introspection)方法可以为我提供类属性的值?
$x.^attributes给我他们的名字和类型,但不是他们的值(value)观。

我认为从 dd 开始一定有某种方式或 .perl提供属性值 - 我认为。

最佳答案

是的,它被称为 get_value .它需要传递给它的属性的对象。例如:

class A {
has $.a = 42;
has $.b = 666;
}
my $a = A.new;
for $a.^attributes -> $attr {
say "$attr.name(): $attr.get_value($a)"
}
# $!a: 42
# $!b: 666

关于class - 内容检查一些(不是全部)类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59520029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com