comment utiliser NULL?

comment utiliser NULL? - Perl - Programmation

Marsh Posté le 06-05-2005 à 09:26:14    

j'aimerai créer un arbre binaire où j'ai un tableau de hachage qui se présenterait comme ça:

Code :
  1. %node=(nom => $clef, left => NULL, right => NULL);


 
sauf qu'avec ça; il me retourne "Bareword "NULL" not allowed while "strict subs" in use at..."
 
comment on peut utiliser le NULL svp?


Message édité par babarpapa le 06-05-2005 à 09:32:54

---------------
http://festivaldujeu-montpellier.org/
Reply

Marsh Posté le 06-05-2005 à 09:26:14   

Reply

Marsh Posté le 06-05-2005 à 10:24:35    

L'erreur est normale, NULL n'existe pas en PERL (à ma connaissance).
 
Utilise 0 (zéro) à la place, que tu testes avec ref() pour savoir s'il s'agit d'une référence ou non.

Reply

Marsh Posté le 06-05-2005 à 17:22:00    

ok, merci à toi ;)


---------------
http://festivaldujeu-montpellier.org/
Reply

Marsh Posté le 11-05-2005 à 11:01:49    

en Perl NULL s'ecrit undef
 
en fait c'est une fonction qui retourne undef et met à undef son eventuel argument, donc on peu faire au choix:
$a = undef;
ou
undef($a);
 
apres on peu le tester avec la fonction defined :
 
if (defined $a) {...

Reply

Marsh Posté le 11-05-2005 à 15:20:34    

Ben si on y reflechi un peu l'equivalent exact de NULL c'est bien 0, pas undef (d'ailleurs en C on a generalement #define NULL 0). undef c'est different, et ca n'a pas d'equivalent en C.

Reply

Marsh Posté le 11-05-2005 à 15:25:11    

ben null c'est une abscence de données normalement, donc une donnée non definie, ce qui correspond bien à undef
 

Reply

Marsh Posté le 11-05-2005 à 15:49:37    

J'avais oublié undef.
 
Je pense que les deux méthodes sont valables (0 et undef), mais j'ai une petite préférence pour undef, qui fait plus propre.
 
De fait en C, NULL c'est 0, mais ce n'est censé s'appliquer qu'aux pointeurs pour dire qu'ils sont non définis. Donc je suis de l'avis de pospos pour dire que undef est bien l'équivalent de NULL en PERL, et non 0.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed