| [ << Tutorial de l’Scheme ] | [Top][Contents][Index] | [ Interfícies per a programadors >> ] |
| [ < Variables del LilyPond ] | [ Up: Scheme dins del LilyPond ] | [ Importació de l’Scheme dins del LilyPond > ] |
A.2.3 Variables d’entrada i l’Scheme
El format d’entrada inclou la noció de variables: a l’exemple
següent, s’assigna una expressió musical a una variable amb el
nom de traLaLa.
traLaLa = { c'4 d'4 }
També hi ha una forma d’àmbit: a l’exemple següent, el bloc
\layout també conté una variable traLaLa, que és
independent de la \traLaLa externa.
traLaLa = { c'4 d'4 }
\layout { traLaLa = 1.0 }
En efecte, cada fitxer d’entrada constitueix un àmbit, i cada bloc
\header, \midi i \layout son àmbits niuats
dins de l’àmbit de nivell superior.
Tant les variables com els àmbits estan implementats al sistema de mòduls del Guile. A cada àmbit s’adjunta un mòdul anònim de l’Scheme. Una assignació de la forma:
traLaLa = { c'4 d'4 }
es converteix internament en una definició de l’Scheme:
(define traLaLa Valor Scheme de `…')
Això significa que les variables del LilyPond i les variables de
l’Scheme es poden barregar amb llibertat. A l’excemple següent,
s’emmagatzema un fragment de música a la variable traLaLa,
i es duplica usant l’Scheme. El resultat s’importa dins d’un bloc
\score per mitjà d’una segona variable twice:
traLaLa = { c'4 d'4 } #(define newLa (map ly:music-deep-copy (list traLaLa traLaLa))) #(define twice (make-sequential-music newLa)) \twice
En realitat, això és un exemple força interessant. L’assignació
sols té lloc després que l’analitzador sintàctic s’ha assegurat
que no segueix res semblan a \addlyrics, de manera que cal
comprovar el que ve a continuació. Llegeix el símbol # i
l’expressió de l’Scheme següent sense avaluar-la, de forma
que pot procedir a l’assignació, i posteriorment executar
el codi de l’Scheme sense problema.
| [ << Tutorial de l’Scheme ] | [Top][Contents][Index] | [ Interfícies per a programadors >> ] |
| [ < Variables del LilyPond ] | [ Up: Scheme dins del LilyPond ] | [ Importació de l’Scheme dins del LilyPond > ] |