Taules de hash

Estructures de dades que s’usen al LilyPond de forma ocasional. Una Taula de hash és semblant a una matriu, però els índexs de la matriu poden ser qualsevol tipus de valor de l’Scheme, no sols enters.

Les taules de hash són més eficients que les llistes_a si hi ha una gran quantitat de dades a emmgatzemar i les dades canvien amb molt poca freqüència.

La sintaxi per crear taules de hash és una mica complexa, però veurem exemples d’això al codi font del LilyPond.

guile> (defineix h (make-hash-table 10))
guile> h
#<hash-table 0/31>
guile> (hashq-set! h 'key1 "val1")
"val1"
guile> (hashq-set! h 'key2 "val2")
"val2"
guile> (hashq-set! h 3 "val3")
"val3"

Els valors es recuperen de les taules de hash mitjançant hashq-ref.

guile> (hashq-ref h 3)
"val3"
guile> (hashq-ref h 'key2)
"val2"
guile>

Les claus i els valors es recuperen com una parella amb hashq-get-handle. Aquesta és la forma preferida, perquè retorna #f si no es troba la clau.

guile> (hashq-get-handle h 'key1)
(key1 . "val1")
guile> (hashq-get-handle h 'frob)
#f
guile>

Extender LilyPond v2.25.28 (development-branch).