est-il possible d'initialiser d'un seul coup plusieurs variables du
style :
my($a, $b, $c, $d)=0;
en fait c'est pour une fonction qui accepte un nombre variable
d'argument. quand je fais my($a, $b, $c, $d)=@-; je voudrais que les
parameetres non passés soit à zéro et pas a undef.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jerome Quelin
kurtz le pirate wrote:
est-il possible d'initialiser d'un seul coup plusieurs variables du style : my($a, $b, $c, $d)=0;
my ($a, $b, $c, $d) = (0) x 4;
en fait c'est pour une fonction qui accepte un nombre variable d'argument. quand je fais my($a, $b, $c, $d)=@-; je voudrais que les parameetres non passés soit à zéro et pas a undef.
en l'occurence, il faut boucler sur tes éléments avec un truc du genre : my ($a, $b, $c, $d) = map { defined($_) ? $_ : 0 } @_;
jérôme --
kurtz le pirate wrote:
est-il possible d'initialiser d'un seul coup plusieurs variables du
style :
my($a, $b, $c, $d)=0;
my ($a, $b, $c, $d) = (0) x 4;
en fait c'est pour une fonction qui accepte un nombre variable
d'argument. quand je fais my($a, $b, $c, $d)=@-; je voudrais que les
parameetres non passés soit à zéro et pas a undef.
en l'occurence, il faut boucler sur tes éléments avec un truc du genre :
my ($a, $b, $c, $d) = map { defined($_) ? $_ : 0 } @_;
est-il possible d'initialiser d'un seul coup plusieurs variables du style : my($a, $b, $c, $d)=0;
my ($a, $b, $c, $d) = (0) x 4;
en fait c'est pour une fonction qui accepte un nombre variable d'argument. quand je fais my($a, $b, $c, $d)=@-; je voudrais que les parameetres non passés soit à zéro et pas a undef.
en l'occurence, il faut boucler sur tes éléments avec un truc du genre : my ($a, $b, $c, $d) = map { defined($_) ? $_ : 0 } @_;
jérôme --
Paul Gaborit
À (at) Sun, 02 Dec 2007 18:16:53 +0100, Jerome Quelin écrivait (wrote):
kurtz le pirate wrote:
est-il possible d'initialiser d'un seul coup plusieurs variables du style : my($a, $b, $c, $d)=0;
my ($a, $b, $c, $d) = (0) x 4;
en fait c'est pour une fonction qui accepte un nombre variable d'argument. quand je fais my($a, $b, $c, $d)=@-; je voudrais que les parameetres non passés soit à zéro et pas a undef.
en l'occurence, il faut boucler sur tes éléments avec un truc du genre : my ($a, $b, $c, $d) = map { defined($_) ? $_ : 0 } @_;
Si @_ ne contient pas 4 éléments les éléments manquants ne seront pas créés à zéro...
On peut mixer les deux méthodes :
my ($a, $b, $c, $d) = ((map { defined $_ ? $_ : 0 } @_), (0) x 4);
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Sun, 02 Dec 2007 18:16:53 +0100,
Jerome Quelin <jquelin@gmail.com> écrivait (wrote):
kurtz le pirate wrote:
est-il possible d'initialiser d'un seul coup plusieurs variables du
style :
my($a, $b, $c, $d)=0;
my ($a, $b, $c, $d) = (0) x 4;
en fait c'est pour une fonction qui accepte un nombre variable
d'argument. quand je fais my($a, $b, $c, $d)=@-; je voudrais que les
parameetres non passés soit à zéro et pas a undef.
en l'occurence, il faut boucler sur tes éléments avec un truc du genre :
my ($a, $b, $c, $d) = map { defined($_) ? $_ : 0 } @_;
Si @_ ne contient pas 4 éléments les éléments manquants ne seront pas
créés à zéro...
On peut mixer les deux méthodes :
my ($a, $b, $c, $d) = ((map { defined $_ ? $_ : 0 } @_), (0) x 4);
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Sun, 02 Dec 2007 18:16:53 +0100, Jerome Quelin écrivait (wrote):
kurtz le pirate wrote:
est-il possible d'initialiser d'un seul coup plusieurs variables du style : my($a, $b, $c, $d)=0;
my ($a, $b, $c, $d) = (0) x 4;
en fait c'est pour une fonction qui accepte un nombre variable d'argument. quand je fais my($a, $b, $c, $d)=@-; je voudrais que les parameetres non passés soit à zéro et pas a undef.
en l'occurence, il faut boucler sur tes éléments avec un truc du genre : my ($a, $b, $c, $d) = map { defined($_) ? $_ : 0 } @_;
Si @_ ne contient pas 4 éléments les éléments manquants ne seront pas créés à zéro...
On peut mixer les deux méthodes :
my ($a, $b, $c, $d) = ((map { defined $_ ? $_ : 0 } @_), (0) x 4);
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
kurtz le pirate
In article , Paul Gaborit wrote:
Si @_ ne contient pas 4 éléments les éléments manquants ne seront pas créés à zéro...
On peut mixer les deux méthodes :
my ($a, $b, $c, $d) = ((map { defined $_ ? $_ : 0 } @_), (0) x 4);
merci :))
-- klp
In article <wt9r6i4aesp.fsf@marceau.enstimac.fr>,
Paul Gaborit <Paul.Gaborit@invalid.invalid> wrote:
Si @_ ne contient pas 4 éléments les éléments manquants ne seront pas
créés à zéro...
On peut mixer les deux méthodes :
my ($a, $b, $c, $d) = ((map { defined $_ ? $_ : 0 } @_), (0) x 4);
À (at) Mon, 10 Dec 2007 16:26:06 +0100, Jean-Baptiste Mazon écrivait (wrote):
my ($a, $b, $c, $d) = (@_, (0) x 4);
Sauf que dans ce cas, une valeur 'undef' passée en argument ne sera pas remplacée par la valeur zéro...
Tout à fait.
De mon point de vue, c'est voulu: j'ai profité du fait que la demande initiale était vague sur ce point.
Mais j'aurais dû le signaler. Mea culpa. Merci de l'avoir fait.
Paul Gaborit
À (at) Mon, 10 Dec 2007 17:45:06 +0100, Jean-Baptiste Mazon écrivait (wrote):
De mon point de vue, c'est voulu: j'ai profité du fait que la demande initiale était vague sur ce point.
En fait, je viens de relire la demande initiale et je me demande si ce n'est pas moi qui déforme... L'objectif était de récupérer des zéros à la place des paramètres *non* *passés*. Il n'était pas demandé que les paramètres passés avec comme valeur 'undef' soit mis à zéro. Donc votre solution convient peut-être mieux finalement.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 10 Dec 2007 17:45:06 +0100,
Jean-Baptiste Mazon <jmazon@invalid.invalid> écrivait (wrote):
De mon point de vue, c'est voulu: j'ai profité du fait que la demande
initiale était vague sur ce point.
En fait, je viens de relire la demande initiale et je me demande si ce
n'est pas moi qui déforme... L'objectif était de récupérer des zéros à
la place des paramètres *non* *passés*. Il n'était pas demandé que les
paramètres passés avec comme valeur 'undef' soit mis à zéro. Donc
votre solution convient peut-être mieux finalement.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 10 Dec 2007 17:45:06 +0100, Jean-Baptiste Mazon écrivait (wrote):
De mon point de vue, c'est voulu: j'ai profité du fait que la demande initiale était vague sur ce point.
En fait, je viens de relire la demande initiale et je me demande si ce n'est pas moi qui déforme... L'objectif était de récupérer des zéros à la place des paramètres *non* *passés*. Il n'était pas demandé que les paramètres passés avec comme valeur 'undef' soit mis à zéro. Donc votre solution convient peut-être mieux finalement.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
kurtz_le_pirate
Paul Gaborit wrote:
À (at) Mon, 10 Dec 2007 17:45:06 +0100, Jean-Baptiste Mazon écrivait (wrote):
De mon point de vue, c'est voulu: j'ai profité du fait que la demande initiale était vague sur ce point.
En fait, je viens de relire la demande initiale et je me demande si ce n'est pas moi qui déforme... L'objectif était de récupérer des zéros à la place des paramètres *non* *passés*. Il n'était pas demandé que les paramètres passés avec comme valeur 'undef' soit mis à zéro. Donc votre solution convient peut-être mieux finalement.
oui, la demande initiale était bien de mettre à zéro les paramètres *non passés*.
si j'appele toto(1,2,3) et que toto attends 4 paramètres, le quatrième sera mis à zéro.
le cas ou le/les parametre(s) sont passé à 'undef' n'est pas possible.
-- klp "bug : probleme d'interface entre la chaise et le clavier"
Paul Gaborit wrote:
À (at) Mon, 10 Dec 2007 17:45:06 +0100,
Jean-Baptiste Mazon <jmazon@invalid.invalid> écrivait (wrote):
De mon point de vue, c'est voulu: j'ai profité du fait que la demande
initiale était vague sur ce point.
En fait, je viens de relire la demande initiale et je me demande si ce
n'est pas moi qui déforme... L'objectif était de récupérer des zéros à
la place des paramètres *non* *passés*. Il n'était pas demandé que les
paramètres passés avec comme valeur 'undef' soit mis à zéro. Donc
votre solution convient peut-être mieux finalement.
oui, la demande initiale était bien de mettre à zéro les paramètres *non
passés*.
si j'appele toto(1,2,3) et que toto attends 4 paramètres, le quatrième
sera mis à zéro.
le cas ou le/les parametre(s) sont passé à 'undef' n'est pas possible.
--
klp
"bug : probleme d'interface entre la chaise et le clavier"
À (at) Mon, 10 Dec 2007 17:45:06 +0100, Jean-Baptiste Mazon écrivait (wrote):
De mon point de vue, c'est voulu: j'ai profité du fait que la demande initiale était vague sur ce point.
En fait, je viens de relire la demande initiale et je me demande si ce n'est pas moi qui déforme... L'objectif était de récupérer des zéros à la place des paramètres *non* *passés*. Il n'était pas demandé que les paramètres passés avec comme valeur 'undef' soit mis à zéro. Donc votre solution convient peut-être mieux finalement.
oui, la demande initiale était bien de mettre à zéro les paramètres *non passés*.
si j'appele toto(1,2,3) et que toto attends 4 paramètres, le quatrième sera mis à zéro.
le cas ou le/les parametre(s) sont passé à 'undef' n'est pas possible.
-- klp "bug : probleme d'interface entre la chaise et le clavier"
Paul Gaborit
À (at) Tue, 11 Dec 2007 16:11:42 +0100, "kurtz_le_pirate" écrivait (wrote):
oui, la demande initiale était bien de mettre à zéro les paramètres *non passés*.
si j'appele toto(1,2,3) et que toto attends 4 paramètres, le quatrième sera mis à zéro.
Ok. Là toutes les deux dernières solutions proposées fonctionnent.
le cas ou le/les parametre(s) sont passé à 'undef' n'est pas possible.
C'est possible si on appelle :
toto(1, undef, 3, 4);
;-)
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 11 Dec 2007 16:11:42 +0100,
"kurtz_le_pirate" <kurtzlepirate@yahoo.fr> écrivait (wrote):
oui, la demande initiale était bien de mettre à zéro les paramètres
*non passés*.
si j'appele toto(1,2,3) et que toto attends 4 paramètres, le quatrième
sera mis à zéro.
Ok. Là toutes les deux dernières solutions proposées fonctionnent.
le cas ou le/les parametre(s) sont passé à 'undef' n'est pas possible.
C'est possible si on appelle :
toto(1, undef, 3, 4);
;-)
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>