Bonjour,
Je commence à utiliser Moose (enfin), mais je bloque sur l'utilisation des hash et donc des hashref si j'ai bien compris, passage obligé pour Moose.
Voici un exemple qui bug à la dernière ligne car il boucle sur du vide et me dit
Can't use an undefined value as a HASH reference at Pat.pm line 19.
Voici le main suivi de Pat.pm
Il commence par un simple hash vide avec une boucle qui n'affiche rien, suivi du rempissage et d'une boucle qui fonctionne. Pour le test, je fais la meme chose avec un objet, que je commence par remplir pour vérifier qu'il affiche bien ce que je veux, mais si je boucle alors que le hash est vide il me donne le message indiqué ci-dessus.
J'imagine que c'est un problème de hashref que j'utilise mal, mais voilà... les déréférencements, j'ai pas trop l'habitude.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #!/usr/bin/perl
use Moose;
use Pat;
use v5.10;
my %test;
foreach my $obj (values(%test)) {
say "vide ",$obj;
}
$test{1}=2;
foreach my $obj (values(%test)) {
say "fonctionne ",$obj;
}
my $pat=Pat->new();
$pat->add(3,4);
$pat->sout();
$pat=Pat->new();
$pat->sout(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| use v5.10;
package Pat;
use Moose;
use Smart::Comments;
has 'el', is => 'rw', isa => 'HashRef[]'; # list of elements
sub BUILD {
my $self=shift;
### Build : $self
}
sub add {
my $self=shift;
my $key=shift;
my $value=shift;
$self->{el}{$key}=$value;
### Add : $self
}
sub sout {
my $self=shift;
foreach my $value (values (%{$self->el})) {
say $value;
}
}
return 1; |
Partager