Les Hash (Hash Table) sont des structures qui, typiquement, permettent d'implémenter des dictionnaires.
Les dictionnaires permettent d'enregistrer des pairs CLE = VALEUR dans une liste... c'est pratique à de nombreux égards.
Le grand avantage d'un dictionnaire, c'est que l'on peut y lire une valeur grâce à une syntaxe simplifiée
ma_valeur := Le_dictionnaire[ "la_cle" ]
Un rapide coup d'oeil sur les fonctions Harbours
Voici quelques bouts de code ci-et-là qui permettent de se familiariser avec les instructions relatives au Hash.
IF hb_isHash( xData ) .AND. hb_hHasKey( xData, "Today" ) OutStd( xData[ "Today" ], hb_eol() ) ENDIF
Il est possible de créer un hash grâce à l'instruction:
hParams := hb_Hash()
Mais j'ai le sentiment que l'instruction suivante produit aussi un Hash:
LOCAL hData := {=>}
Le fichier de compatibilité de Harbour (hbcompat.ch) nous apprend qu'il existe de nombreuses autre fonctions utilitaires autour des Hash:
#xtranslate hb_HASH([<x,...>]) => HASH(<x>) #xtranslate hb_HHASKEY([<x,...>]) => HHASKEY(<x>) #xtranslate hb_HPOS([<x,...>]) => HGETPOS(<x>) #xtranslate hb_HGET([<x,...>]) => HGET(<x>) #xtranslate hb_HSET([<x,...>]) => HSET(<x>) #xtranslate hb_HDEL([<x,...>]) => HDEL(<x>) #xtranslate hb_HKEYAT([<x,...>]) => HGETKEYAT(<x>) #xtranslate hb_HVALUEAT([<x,...>]) => HGETVALUEAT(<x>) #xtranslate hb_HVALUEAT([<x,...>]) => HSETVALUEAT(<x>) #xtranslate hb_HPAIRAT([<x,...>]) => HGETPAIRAT(<x>) #xtranslate hb_HDELAT([<x,...>]) => HDELAT(<x>) #xtranslate hb_HKEYS([<x,...>]) => HGETKEYS(<x>) #xtranslate hb_HVALUES([<x,...>]) => HGETVALUES(<x>) #xtranslate hb_HFILL([<x,...>]) => HFILL(<x>) #xtranslate hb_HCLONE([<x,...>]) => HCLONE(<x>) #xtranslate hb_HCOPY([<x,...>]) => HCOPY(<x>) #xtranslate hb_HMERGE([<x,...>]) => HMERGE(<x>) #xtranslate hb_HEVAL([<x,...>]) => HEVAL(<x>) #xtranslate hb_HSCAN([<x,...>]) => HSCAN(<x>) #xtranslate hb_HSETCASEMATCH([<x,...>]) => HSETCASEMATCH(<x>) #xtranslate hb_HCASEMATCH([<x,...>]) => HGETCASEMATCH(<x>) #xtranslate hb_HSETAUTOADD([<x,...>]) => HSETAUTOADD(<x>) #xtranslate hb_HAUTOADD([<x,...>]) => HGETAUTOADD(<x>) #xtranslate hb_HALLOCATE([<x,...>]) => HALLOCATE(<x>) #xtranslate hb_HDEFAULT([<x,...>]) => HDEFAULT(<x>)
Aucun commentaire:
Enregistrer un commentaire