AN1007 – Création de fonctions dans SHIP
Fonctions dans SHIP
Les fonctions sont un concept de base de l’écriture de code compact et stable. Ils permettent l’utilisation répétitive d’un ensemble d’étapes, parfois avec des entrées différentes, pour obtenir des sorties différentes. Dans SHIPTide, cela se traduira par des scripts plus petits, réduisant ainsi la taille de vos fichiers de fret. Une fonction SHIPTide est en fait un script SHIPTide, mais elle se trouve dans la zone de ressources en dehors de l’arborescence des nœuds de mise en page du projet.
Une fonction SHIPTide peut être créée soit dans la catégorie script, soit dans la catégorie Divers de la zone Ressources du projet. Les fonctions SHIPTide utilisent des variables comme entrées et sorties de la fonction au lieu de passer des arguments et de renvoyer des résultats. Les variables de fonction peuvent résider dans les catégories Variable ou Divers dans la zone Ressources du projet.
Variables de fonction pour les arguments et les retours
Créez une variable dans la zone Ressource du projet sous le groupe Variable en tant qu’argument d’entrée pour la fonction. Dans cet exemple, une variable de type octet est créée sous le groupe Variable nommé « vSelection ».
Créez une variable dans la zone Ressource du projet sous le groupe Variable en tant que résultat de sortie de la fonction. Dans cet exemple, une variable de type chaîne est créée sous le groupe Variable nommé « vTextToDisplay ».
Fonction Corps
Créez un script dans la zone Ressources du projet sous le groupe Script nommé « FindName ». Ce script représentera la fonction utilisée pour cet exemple.
Pour le script de fonction nouvellement créé à l’étape précédente, le code SHIPTSail suivant est ajouté. Vous pouvez le saisir en double-cliquant sur le nom du script de fonction « FindName » et en tapant le code SHIPSail comme indiqué ci-dessous.
/***
* Exemple de fonction utilisant le langage de script SHIPSail.
*
* Cette fonction renvoie une chaîne de texte à la sortie
* Variable basée sur la variable d'entrée du type de sélection.
*
* Variable d'entrée : vSelection
* Variable de sortie : cTextToDisplay
*/
commutateur (vSelection) {
Cas 0:
vTextToDisplay = « Bonjour » ;
casser;
Cas 1 :
vTextToDisplay = « Bonjour » ;
casser;
faire défaut:
vTextToDisplay = « Bienvenue » ;
casser;
}
Dans cet exemple, la fonction FindName prend la valeur de la variable d’entrée « vSelection » et détermine le texte de sortie à attribuer à la variable de sortie « vTextToDisplay » en fonction d’une simple instruction case.
Appel de la fonction
Pour cet exemple, afin d’appeler le script de fonction créé à l’étape précédente, le code SHIPSail doit être ajouté au script appelant. Dans cet exemple, le script utilisé pour cela se trouve sous l’écouteur pageState, comme illustré ci-dessous.
Dans ce script, le code SHIPSail appelant la fonction FindName a été ajouté sous la page avec état, comme illustré ci-dessous par l’exemple de code.
/**
* Le code SHIPSail ci-dessous, ajouté à ce script, configure la variable d'entrée
* vSelection, appelle le script de fonction FindName(), et utilise la variable de sortie
* vTextToDisplay pour attribuer la valeur à la variable de texte
* d0.pSplash.TextFrame.t.value.
*/
// Configurer la variable d'entrée vSelection
vSélection = 1 ;
// Appeler le script de fonction
FindName() ;
// Attribuez la valeur de sortie à d0.pSplash.TextFrame.t
d0.pSplash.TextFrame.t.value = vTextToDisplay ;
Regroupement des ressources
Pour plus de clarté et de commodité, une autre chose qui pourrait être faite est de regrouper le script de fonction et les variables. Comme illustré ci-dessous, les variables d’entrée et de sortie, vSelection et vTextToDisplay, ainsi que le script de fonction FindName ont été déplacés sous le groupe nouvellement créé intitulé « Chaînes » dans la zone Ressources du projet sous le groupe Divers. Cela n’a pas été mis en œuvre dans cet exemple.
Résumé
Cet exemple de fonction SHIPTide utilise un projet SHIPTide de base SIM par défaut. Le script d0.pSplash.pageState.pageUpdate appelle une fonction SHIPTIde à partir de la zone Ressources du projet pour déterminer le texte à afficher dans le bloc de texte enfant de la page pSplash à l’aide d’une sélection numérotée en entrée. Notez également que pour cet exemple, le cadre de texte et le texte sous la page pSplash ont été renommés pour aider dans cet exemple.
Tout d’abord, la valeur de la variable vSelection est définie sur 3. Ensuite, la fonction FindName est appelée. Le FindName renvoie la valeur de chaîne attribuée « Hello » à la variable de sortie vTextToDisplay (voir l’exemple de changement dans la section Instruction de commutation de fonction). La valeur de la variable vTextToDisplay est ensuite attribuée à la valeur de texte d0.pSplash.TextFrame.t.value, en remplaçant le texte d’origine de « Welcome » par « Hello ».
Par conséquent, lors de l’exécution de l’interface graphique, chaque appel successif de la fonction ChangeName, basé sur la valeur attribuée en tant que variable d’entrée vSelection, produira une valeur de chaîne différente attribuée à la variable de sortie vTestToDisplay. Bien que cet exemple soit de nature simpliste, il montre comment le script de fonction FindName peut être appelé à partir de plusieurs scripts différents pour obtenir une valeur de chaîne souhaitée à afficher sur l’interface graphique.
Le regroupement des ressources n’a pas été mis en œuvre, mais devrait l’être dans des projets plus vastes pour plus de clarté et de commodité.