NOUVEL ALIAS POUR HASH TABLE /HREP

cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 - 6 juil. 2004 à 14:36
cs_Melnofil Messages postés 71 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 1 février 2008 - 23 nov. 2004 à 14:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24312-nouvel-alias-pour-hash-table-hrep

cs_Melnofil Messages postés 71 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 1 février 2008
23 nov. 2004 à 14:56
ok autant pour moi désolé ^^
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
23 nov. 2004 à 07:44
j'ai rajouté le point pour qu'on voye dans mon commentaire que ct une commande, comme si je connaissais pas les hash tables lais mdr quoi ..
cs_Melnofil Messages postés 71 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 1 février 2008
23 nov. 2004 à 03:37
A mince j'ai oublié de signaler/modifier une autre erreur :
Par défauts les fonctions sur les htables n'affichent rien (il faut utiliser le paramêtre "-s") donc le "." devant "hadd" sert à rien, tofu c'est aussi vrai pour toi avec "hdel"...
cs_Melnofil Messages postés 71 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 1 février 2008
23 nov. 2004 à 03:32
Bravo félicitations je t'ai mis 1 (Bon maintenant je me justifie avant de me faire casser la g***le)

Dans un alias appelé sous la forme /hrep il est impossible que les paramêtres $1 et $2 soient nuls si $3 ne l'est pas. Et plus simplement tu peux tester si "$0 > 2" ($0 contient le nombre de paramètres).
Note : Dans un identifiant il faudrait d'abords utiliser "/tokenize 32 $1-" pour parvenir au même résultat.

De plus tu utilise l'option "-m", je cite l'aide :
"L'option -m fait que /hadd crée la table si elle n'existe pas déjà."
Et ben alors... pkoi diable est-ce qu'on viens de faire un "if (!$hget($1))" ??

De plus il est toujours plus judicieux (pas obligatoire !) de traiter en premier les cas ou tout ce passe bien, puis traiter les erreurs à la fin ; surtout quand on se trouve dans une structure if/then/else facile à lire.

Et enfin une remarque -juste pour faire plus classe- on peut remplacer tous les 5 "halt" par seulement 1 "halt" pour le prix d'un "return" en plus.

Voilà ce que ca donne :

alias hrep {
if $0 > 2 {
if $hget($1,$2) != $null { .hadd -m $1- | return }
elseif !$hget($1) { echo -a *** /hrep Erreur table $1 Inexistante }
else echo -a *** /hrep Erreur Item $2 de la table $1 Inexitant
}
else echo -a *** /hrep Erreur Il manque $calc(3 - $0) paramètre(s).
halt
}
cs_tofu Messages postés 1726 Date d'inscription vendredi 12 septembre 2003 Statut Membre Dernière intervention 13 juin 2009 1
6 juil. 2004 à 21:12
t'as pas besoin de .hdel puis .hadd, qd tu .hadd ça écrase ce que tu avais précédemment.
cs_Seregon Messages postés 126 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 29 août 2004
6 juil. 2004 à 19:52
$1 $2 devien $1-2
$1 $2 $3 devien $1-
talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 1
6 juil. 2004 à 17:10
ah bon ?? j'ai jamais vu cet alias ici
cs_ReMi34 Messages postés 1025 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 28 mars 2005 2
6 juil. 2004 à 16:36
Wapsnest avait réaliser la même chose :/
talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 1
6 juil. 2004 à 16:02
D'accord merci SornDrixer je vais modifier ça je vais essayer d'utiliser le $iif comme tu l'a dit je l'utilise térs souvent dans mes autres codes
cs_SornDrixer Messages postés 2084 Date d'inscription jeudi 12 décembre 2002 Statut Membre Dernière intervention 30 janvier 2011 8
6 juil. 2004 à 14:36
Tes 3 if de vérification d'erreur, tu peux en faire qu'un seul :
if !$3 { echo -a *** /hrep Erreur Paramètre manquant | halt }
Si $3 n'existe pas, c'est que $1 et $2 non plus.
Si cela te gêne cette méthode de raisonner, tu peux toujours faire :
if (!$1 || !$2 || !$3) { }
Si tu veux absolument afficher à quoi correspond le paramètre manquant, utilises $iif()

Voila, sinon c'est une très bonne chose de vouloir compléter les commandes pour hashtable, mais je trouve le code un peu maigre.
une idée :
En spécifiant le paramètre -n à ton alias, si jamais la table n'existe pas, alors ton alias la crée.
Rejoignez-nous