Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

passage de paramètres

0 views
Skip to first unread message

kurtz_le_pirate

unread,
Oct 10, 2008, 5:37:55 AM10/10/08
to
bonjour,

j'ai une fonction qui supprime une valeur dans un tableau :

sub deleteValeur {
my ($v,@t)=@_;
my @tmp;
for my $x (@t) {
push @tmp,$x if ($x != $v);
}
return @tmp;
}


que j'appele comme ça : @tab=deleteValeur(9,@tab);
ce que je voudrais, c'est faire directement :
deleteValeur(9,@tab);
sans être obligé de renvoyer le tableau mais travailler directement
dessus.

donc si je passe la référence du tableau par 'deleteValeur(9,\@tab)',
comment je la récupère dans le sub ?
merci

--
klp
"bug : probleme d'interface entre la chaise et le clavier"

Paul Gaborit

unread,
Oct 10, 2008, 5:56:28 AM10/10/08
to

À (at) Fri, 10 Oct 2008 11:37:55 +0200,
"kurtz_le_pirate" <kurtzl...@yahoo.fr> écrivait (wrote):

> j'ai une fonction qui supprime une valeur dans un tableau :
>
> sub deleteValeur {
> my ($v,@t)=@_;
> my @tmp;
> for my $x (@t) {
> push @tmp,$x if ($x != $v);
> }
> return @tmp;
> }
>
>
> que j'appele comme ça : @tab=deleteValeur(9,@tab);

Il existe une petite fonction Perl qui s'appelle grep et qui permet de
faire exactement ça (et bien plus) :

@tab = grep {$_ != 9} @tab;

> ce que je voudrais, c'est faire directement :
> deleteValeur(9,@tab);
> sans être obligé de renvoyer le tableau mais travailler directement
> dessus.
>
> donc si je passe la référence du tableau par 'deleteValeur(9,\@tab)',
> comment je la récupère dans le sub ?
> merci

Par référence, c'est très simple :

sub deleteValeurByRef {
my ($v, $ref_tab)=@_;
@{$ref_tab} = grep {$_ != $v} @{$ref_tab};
}

qui s'appelle par :

deleteValeurByRef(9, \@tab);

On peut aussi utiliser les prototypes de fonctions :

sub deleteValeurInPlace($\@) {
my ($v, $ref_tab)=@_;
@{$ref_tab} = grep {$_ != $v} @{$ref_tab};
}

qui s'appelle par :

deleteValeurInPlace(9, @tab);

Les prototypes ne fonctionnent pas pour les méthodes.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

kurtz_le_pirate

unread,
Oct 14, 2008, 3:41:37 AM10/14/08
to


comme d'hab, tu réponds bien au dela des demandes.
merci :))

0 new messages