Les fonctions
Rebol permet de créer des fonctions :
la syntaxe est nomfonction:
func [arguments] [instructions de la fonctions]
L' intruction
return permet de mettre fin à la fonction et de
renvoyer une valeur.
; définition d'une fonction renvoyant le + petit des 2 nombres
getMin: func [pnb1 pnb2]
[
diff: pnb1 -pnb2
if diff < 0 [ return pnb1]
if diff > 0 [ return pnb2]
if diff = 0 [ return 0]
]
; Appel de la fonction
min: getMin 1251 33
print min ;renvoi 33
On peut typer les arguments, rajouter un commentaire à la fonction, un
libellé aux arguments:
getMin: func [ "renvoi le + petit nombre" pnb1 [integer!] "1er nombre" pnb2 [integer!] "2eme nombre"]
[
diff: pnb1 - pnb2
if diff < 0 [ return pnb1]
if diff > 0 [ return pnb2]
if diff = 0 [ return 0]
]
L'appel de l'aide sur la fonction par help getMin donne :
USAGE:
GETMIN pnb1 pnb2
DESCRIPTION:
renvoi le + petit nombre
GETMIN is a function value.
ARGUMENTS:
pnb1 -- 1er nombre (Type: integer)
pnb2 -- 2eme nombre (Type: integer)
On peut également ajouter un raffinement :
Exemple, avec /somme :
getMin: func [
"renvoi le + petit nombre"
pnb1 [integer!] "1er nombre"
pnb2 [integer!] "2eme nombre"
/somme "Renvoi la somme des 2 nombres"
]
[
either somme[ return pnb1 + pnb2]
[
diff: pnb1 - pnb2
if diff < 0 [ return pnb1]
if diff > 0 [ return pnb2]
if diff = 0 [ return 0]
]
; Appel de la fonction Avec le raffinement /somme
b: getMin/somme 108 22
print b ; renvoi 130 la somme
; Appel de la fonction Sans le raffinement /somme
b: getMin 108 22
print b ; renvoi 22, le + petit
La gestion des erreurs
Rebol founit l'instruction
try permettant d'intercepter les erreurs.
La syntaxe est : try [block d'instructions]
Try renvoi soit la valeur du block, soit une erreur.
Exemple :
print try [1 + 2] ; renvoi 3
print type? try [1 + 2] ; renvoi integer
print type? try [1 / 0] ; renvoi error (car division par zéro)
En combinant un
if et l'evaluation de l'erreur
error? :
if error? try [ montant / total ] [ print "erreur de division " ]
Autre exemple concernant la lecture d'un fichier, nous allons tester la lecture,
quitter le programme si erreur, si ok affichage du contenu du fichier :
if error? try [data: read %/c/tmp/logs/appli1.log]
[
print "Erreur de lecture du fichier, fin de programme, valider"
input
quit
]
; La lecture du fichier est Ok : affichage du contenu
print data
Le debug
Rebol offre plusieurs possibilités pour debugger un script. On peut
biensûr utiliser comme dans tout langage, le
print universel
...
Rebol permet grâce à l'instruction
echo de rediriger la
sortie de la console vers un fichier. La syntaxe est :
echo fichier_sortie qui permet d'activer la sortie dans le fichier
cité et
echo none qui permet de désactiver la sortie.
Cela permet d'analyser le cheminement d'un script complexe, d'analyser le
contenu des valeurs des variables.
Exemple :
rebol[
Version: 1.1.2
auteur: "rebolzone"
date:02-11-2002
role: "Essai de echo"
]
echo %traceprg.log ; on active la sortie dans le fichier traceprg.log
;début de script
a: 12345
b: 123456
c: a + b
print c
print do [a * 3]
if c > do [a * 3] [print "Supérieur"]
input
echo none ; désactivation de la sortie fichier
Dans cet exemple, tous les print seront affichés dans la console Rebol,
mais également dans le fichier traceprg.log du répertoire courant.
Noter que le nom du fichier est précédé d'un % (type
File) et que l'on peut mettre un chemin complet tel que /c/tmp/traceprg.log.
L'instruction
? permet de connaitre la valeur d'une variable et son
type :
Exemple :
FileOut: %/c/tmp/resultats.log
MaxEnreg: 10000
? FileOut
? MaxEnreg
L'affichage sera le suivant :
FILEOUT is a file of value: %/c/tmp/resultats.log
MAXENREG is an integer of value: 10000
L'instruction
probe permet egalement d'afficher toute variable ou
objet. Essayer l'exemple suivant dans la console Rebol :
print system/console
? system/console
?? system/console
probe system/console
L'instruction
probe permet de voir dans l'exemple précédent,
les différents attributs de l'objet system/console.