J'ai écrit un programme simple qui utilise Class::ArrayObjects mais cela n'a pas fonctionné comme je m'y attendais. Le programme est le suivant:Comment utiliser Class :: ArrayObjects?
TestArrayObject.pm:
package TestArrayObject;
use Class::ArrayObjects define => {
fields => [qw(name id address)],
};
sub new {
my ($class) = @_;
my $self = [];
bless $self, $class;
$self->[name] = '';
$self->[id] = '';
$self->[address] = '';
return $self;
}
1;
Test.pl
use TestArrayObject;
use Data::Dumper;
my $test = new TestArrayObject;
$test->[name] = 'Minh';
$test->[id] = '123456';
$test->[address] = 'HN';
print Dumper $test;
Quand je lance Test.pl, les données de sortie est:
$VAR1 = bless([
'HN',
'',
''
], 'TestArrayObject');
I demande-moi où sont mes données pour 'nom' et 'id'?
Merci, Minh.
Vous pouvez enregistrer des lignes de code et des erreurs de gestion lors de l'écriture du générateur de méthodes 'BEGIN {for (qw (nom adresse de l'identifiant)) {no strict 'refs'; mon $ no = &$_; * {ucfirst()} = sub {mon $ self = shift; $ self -> [$ no] = shift si @_; return $ self -> [$ no];};}} ' –
Quoi qu'il en soit, je n'aime pas obtenir/définir et recommander en utilisant get et set séparés. 'BEGIN {for (qw (nom de l'adresse id)) {no strict 'refs'; my $ no = &$_; mon $ name = ucfirst; * {"get $ name"} = sub {shift -> [$ non]}; * {"set $ name"} = sub {$ _ [0] -> [$ no] = $ _ [1]};}} ' –
Oui, je suis d'accord avec vous sur l'utilisation de get/set. Cela rend le code plus OO. –