datatype dans les blocs | |
drikc | 27-Aug-2007/18:37:09+2:00 |
bonjour à tous, qqchose me suprend pour les datatypes dans les blocs: ----------------- >> b: [none true 1 "drikc" %drikc.htm $69] == [none true 1 "drikc" %drikc.htm $69] >> forall b [ print type? b/1 ] word word integer string file money ----------------- Pourquoi 'none' et 'true' sont-ils typés comme word! à l'intérieur du bloc? Y'en a-t-il d'autres? Y'a-t-il une hiérarchie de typage ou qqchose que je devrais savoir? Enfin ça surprend! merci et à bientôt! | |
Goldevil | 27-Aug-2007/22:17:11+2:00 |
Rajoute cela à la fin de script : ----------------------- >> c: reduce b == [none true 1 "drikc" %drikc.htm $69.00] >> forall c [ print type? c/1 ] none logic integer string file money ------------------------ Il faut donc bien comprendre que par défaut un bloc n'est pas évalué. Reduce remplace chaque élément par sa valeur et c'est seulement après cela que le mot clé "none" est remplacé par la valeur none. Je suis d'accord, ça semble tordu. Mais c'est une partie intrinsèque du langage et c'est très utile. Regarde le code suivant: ------------------------ >> mycode: [ print a] == [print a] >> >> forall mycode [ print type? mycode/1 ] word word >> a: "Hello" == "Hello" >> >> reduce mycode Hello == [unset] >> do mycode Hello ------------------------ Si le bloc était immédiatement évalué, il y aurait une erreur dès la première ligne. En effet, a n'était pas encore défini, et l'instruction print aurait fonctionner. En fin de compte, si ce n'était pas le cas, Rebol serait beaucoup moins utile. | |
drikc | 28-Aug-2007/13:04:58+2:00 |
j'ai complètement compris et tout est logique maintenant. merci pour l'explication. | |
Login required to Post. |