B.2.2 Uso de las funciones de Scheme
Las funciones de Scheme se pueden llamar casi desde cualquier
lugar en que puede escribirse una expresión de Scheme que
comience con la almohadilla #
. Llamamos a una
función de Scheme escribiendo su nombre precedido de la barra
invertida \
, y seguido por sus argumentos. Una vez
que un argumento opcional no corresponde a ningún argumento,
LilyPond se salta este argumento y todos los que le siguen,
sustituyéndolos por su valor por omisión especificado, y
‘recupera’ el argumento que no correspondía al lugar del
siguiente argumento obligatorio. Dado que el argumento
recuperado necesita ir a algún lugar, los argumentos opcionales
no se consideran realmente opcionales a no ser que vayan seguidos
de un argumento obligatorio.
Existe una excepción: si escribimos \default
en el lugar
de un argumento opcional, este argumento y todos los argumentos
opcionales que le siguen se saltan y se sustituyen por sus
valores predeterminados. Esto funciona incluso si no sigue
ningún argumento obligatorio porque \default
no necesita
recuperarse. Las instrucciones mark
y key
hacen
uso de este truco para ofrecer su comportamiento predeterminado
cuando van seguidas solamente por \default
.
Aparte de los lugares en que se requiere un valor de Scheme hay
ciertos sitios en que se aceptan expresiones de almohadilla
#
y se evalúan por sus efectos secundarios, pero por lo
demás se ignoran. Son, mayormente, los lugares en que también
sería aceptable colocar una asignación.
Dado que no es buena idea devolver valores que puedan malinterpretarse en algún contexto, debería usar funciones de Scheme normales solo para los casos en que siempre se devuelve un valor útil, y usar funciones de Scheme vacías (véase la sección Funciones de Scheme vacías) en caso contrario.
Por conveniencia, las funciones de Scheme también se pueden
llamar directamente desde Scheme, puenteando al analizador
sintáctico de LilyPond. Su nombre puede utilizarse como el
nombre de una función corriente. La comprobación de tipo de los
argumentos y el salto de los argumentos opcionales tiene lugar de
la misma forma que cuando se llama desde dentro de LilyPond,
tomando el valor de Scheme *unspecified*
el papel de la
palabra reservada \default
para saltar explícitamente
argumentos opcionales.
Otros idiomas: English, deutsch, français.
Acerca de la selección automática del idioma.