[ << Interfaces pour programmeurs ] | [Top][Contents][Index] | [ Interfaces LilyPond Scheme >> ] |
[ < Définition de fonctions Scheme ] | [ Up : Fonctions Scheme ] | [ Fonctions Scheme fantômes > ] |
2.2.2 Utilisation de fonctions Scheme
Vous pouvez appeler une fonction Scheme pratiquement partout où une expression Scheme derrière un ‘#’ peut prendre place. Vous appelez une fonction Scheme à partir de LilyPond en faisant précéder son nom d’un ‘\’, et en le faisant suivre de ses arguments. Lorsqu’un prédicat d’argument optionnel ne correspond pas à un argument, LilyPond l’ignore ainsi que tous les arguments optionnels qui suivent, les remplaçant par leur valeur par défaut, et « sauvegarde » en tant que prochain argument obligatoire l’argument qui ne correspondait pas. Dans la mesure où l’argument sauvegardé doit servir, les argument optionnels ne sont en fait pas considérés comme optionnels, sauf à être suivis d’un argument obligatoire.
Une exception cependant à cette règle : le fait de donner un
\default
en tant qu’argument optionnel aura pour résultat que cet
argument et tous les autres arguments optionnels qui suivent seront
ignorés et remplacés par leur valeur par défaut. Il en va de même
lorsqu’aucun argument obligatoire ne suit, du fait que \default
ne requiert pas de sauvegarde. C’est d’ailleurs ainsi que fonctionnent
les commandes mark
et key
, qui retrouvent leur
comportement par défaut lorsque vous les faites suivre d’un
\default
.
En plus de là où une expression Scheme est requise, il y a quelques endroits où des expressions ‘#’ sont acceptées et évaluées uniquement pour leurs effets annexes. Il s’agit, dans la plupart des cas, d’endroits où une affectation serait tout à fait envisageable.
Dans la mesure où il n’est pas bon de renvoyer une valeur qui pourrait être mal interprétée dans certains contextes, nous vous enjoignons à utiliser des fonctions Scheme normales uniquement dans les cas où vous renvoyez toujours une valeur utile, et une fonction fantôme – voir Fonctions Scheme fantômes – dans le cas contraire.
Pour des raisons de commodité, il est possible de faire appel à des
fonctions Scheme directement en Scheme, courcircuitant ainsi l’analyseur
de LilyPond. Leur nom s’utilise comme n’importe quel nom de fonction. Le
contrôle de typologie des arguments et l’omission des arguments
optionnels seront traîtés de la même manière que lorsque l’appel est
fait à partir de LilyPond, la valeur Scheme *unspecified*
ayant
le rôle du mot réservé \default
pour omettre explicitement les
arguments optionnels. Les arguments optionnels en fin de liste
d’arguments peuvent être omsi sans plus d’indication lorsque l’appel est
fait au sein même de Scheme.
[ << Interfaces pour programmeurs ] | [Top][Contents][Index] | [ Interfaces LilyPond Scheme >> ] |
[ < Définition de fonctions Scheme ] | [ Up : Fonctions Scheme ] | [ Fonctions Scheme fantômes > ] |