[ << Interfaces para programadores ] | [Top][Contents][Index] | [ Interfaces de Scheme de LilyPond >> ] |
[ < Uso de las funciones de Scheme ] | [ Up : Funciones de Scheme ] | [ Funciones musicales > ] |
B.2.3 Funciones de Scheme vacías
En ocasiones, un procedimiento se ejecuta con el objeto de llevar
a cabo alguna acción más que para devolver un valor. Algunos
lenguajes de programación (como C y Scheme) usan las funciones
para los dos conceptos y se limitan a descartar el valor devuelto
(usualmente haciendo que cualquier expresión pueda actuar como
instrucción, ignorando el resultado devuelto). Esto puede
parecer inteligente pero es propenso a errores: casi todos los
compiladores de C de hoy en día emiten advertencias cuando se
descarta una expresión no vacía. Para muchas funciones que
ejecutan una acción, los estándares de Scheme declaran que el
valor de retorno sea no especificado. Guile, el intérprete de
Scheme de LilyPond, tiene un valor único *unspecified*
que
en tales casos devuelve de forma usual (como cuando se usa
directamente set!
sobre una variable), pero
desgraciadamente no de forma consistente.
Definir una función de LilyPond con define-void-function
asegura que se devuelve este valor especial, el único valor que
satisface el predicado void?
.
noApuntarYPulsar = #(define-void-function () () (ly:set-option 'point-and-click #f)) … \noApuntarYPulsar % desactivar la función de apuntar y pulsar
Si queremos evaluar una expresión sólo por su efecto colateral y
no queremos que se interprete ningún valor que pueda devolver,
podemos hacerlo anteponiendo el prefijo \void
:
\void #(hashq-set! some-table some-key some-value)
De esta forma podemos asegurar que LilyPond no asignará ningún
significado al valor devuelto, independientemente de dónde lo
encuentre. También funciona para funciones musicales como
\displayMusic
.
[ << Interfaces para programadores ] | [Top][Contents][Index] | [ Interfaces de Scheme de LilyPond >> ] |
[ < Uso de las funciones de Scheme ] | [ Up : Funciones de Scheme ] | [ Funciones musicales > ] |