Page 1 sur 1

Les énumérations comme type de variable

Publié : mer. 25/janv./2017 16:02
par Guillot
Un exemple de code (inspiré du VB) tel que j’aimerai le voir en PB

Code : Tout sélectionner

Enumeration choix
#valeur1
#valeur2
#valeur3
EndEnumeration

Procedure test(v.choix)
...
EndProcedure

test(#valeur1 | #valeur3)

Define a.i
a = choix.#valeur2

Define b.choix
b=#valeur1
Le principal intérêt est de facilité l’usage des constantes

Lorsque je tape ‘ test(‘ l’editeur me propose automatiquement #valeur1,#valeur2, #valeur3 (et apres les opérateurs relatifs aux entiers (‘|’ principalement))
De même lorsque je tape ‘a=choix.’ Avec ‘a’ de type entier
Ou lorsque je tape ‘b= ‘ avec ‘b’ de type choix

Appliqué aux fonction PB ça facilliterai grandement l’ecriture du code

Par exemple :
OpenWindow(0, 0, 0, 512,512, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
deviendrai :
OpenWindow(0, 0, 0, 512,512, "", #SystemMenu | #ScreenCentered | #SizeGadget)

Plus besoin de taper ‘#PB_Wi ‘ pour voir les options possible (ou comme moi : aller dans l’aide et copier la constante voulue…)
De plus ça rend la syntaxe plus clair (moins de répétition (ici ‘PB_Window_ ‘) ) et ça limite les risque d’erreur

Re: Les énumérations comme type de variable

Publié : mer. 25/janv./2017 16:23
par Micoute
Le mieux serait au développeur de se fabriquer un fichier de constantes personnelles qu'on chargerait avec IncludeFile.

Re: Les énumérations comme type de variable

Publié : mer. 25/janv./2017 23:35
par JohnJohnsonSHERMAN
Ca me semble une trés bonne idée ca... :)

Re: Les énumérations comme type de variable

Publié : jeu. 26/janv./2017 0:06
par falsam
@JJ: Bon tu es comme d'habitude hein ? ^^

@Guillot: Je ne te suivrais pas dans ta suggestion. Peut être à cause de l'exemple ...

Code : Tout sélectionner

a = choix.#valeur2
Non mais franchement !!
Un exemple de code (inspiré du VB) tel que j’aimerai le voir en PB
inspiré de VB ? (No troll) Mais non je l'aime mon PureBasic. Qu'il reste comme il est :wink:


Il y a des choses à améliorées c'est certains. Mais que PureBasic reste lui même : Simple et rapide.

Il y a des gens barrés sur ce forum mais toi tu abuses.

Re: Les énumérations comme type de variable

Publié : jeu. 26/janv./2017 9:44
par djes
Il y a de l'idée là-dedans, même si j'ai dû me contorsionner l'esprit pour en voir l'intérêt. Je crois comprendre l'effet de souplesse de l'édition de code, effectivement !

Ce que j'aime moins, c'est la confusion, même si je reconnais que ça permet souvent des choses inédites. Par exemple, le fait d'utiliser le typage avec des constantes, ça me rend dingue, parce que ça mélange le travail du compilateur et le travail de l'interpréteur. Et souvent les débutants mélangent ces deux choses dans la phase d'apprentissage, et c'est d'ailleurs ce que je (et je ne suis pas le seul) reproche aux langages tels que VB. A la fin on ne sait plus ce qu'on manipule, et on perd de vue le travail du processeur et la quantité de mémoire requise.

Enfin bref, ici, il y a effectivement un intérêt, mais perso je n'en veux pas sous cette forme. Pour orienter les choses, je pense que tu as oublié un truc, c'est le type de v. Il faut qu'il soit défini quelque part. Ca remet en cause l'utilisation du point (.) qui doit rester (à mon avis) strictement associé au typage.

Re: Les énumérations comme type de variable

Publié : jeu. 26/janv./2017 10:20
par Guillot
bon je pense que mes explications sont pas tres claire
et le titre fait pas rêver !
mais je pense que ce serait une évolution extrêmement importante de PB
les commandes PB font usage des constantes plus que n'importe quel autre langage à ma connaissance
ce que je propose c'est ni plus ni moins que d'avoir automatiquement la liste des constantes concernés pour chaque paramètre 'constante' des commandes
un peu à l'image des structure: lorsqu'on tape "\" on à la liste de ses variables

quand à la syntaxe, là, c'est discutable
j'ai mis un '.' en tre le nom de l'enumeration et la constante, mais on pourrai aussi prendre un '\' comme les structures, ou autre choses
de même, comme le fait remarquer falsam:
'a = choix.#valeur2' c'est pas terrible, je préférerai
'a = #choix.valeur2' c'est juste que le '#' n'est pas autorisé pour les noms d'énumération

(si ce mode de fonctionnement était limité aux commande PB, ce serai deja, à mon avis, le principal)

Re: Les énumérations comme type de variable

Publié : jeu. 26/janv./2017 10:43
par microdevweb
Franchement je trouve Pb bien comme il est, même si je regrette certain manque comme la Poo.
On peut évidement créer ses propres constantes ou par exemple

Code : Tout sélectionner

OpenWindow(0,0,0,800,600,"teste",$CB0001)
; équivaut à 
OpenWindow(0,0,0,800,600,"teste",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)

OpenWindow(0,0,0,800,600,"teste",$CB0001|#PB_Window_Maximize)
;Ou
OpenWindow(0,0,0,800,600,"teste",$1CB0001)
; équivaut à 
OpenWindow(0,0,0,800,600,"teste",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_Maximize)
Comment retrouver cette valeur hexa?

C'est vraiment très simple

Code : Tout sélectionner

Debug Hex(#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
; Il suffis juste d'ajouter le $ devant
Ce qui est certain c'est que Pb doit resté un langage de programmation bas niveau et les constantes doivent resté des constantes.

Re: Les énumérations comme type de variable

Publié : jeu. 26/janv./2017 17:05
par djes
En fait, je pense que ça pourrait peut-être le faire avec

Code : Tout sélectionner

Enumeration choix.i
Dans le cas où l'interpréteur (et le programmeur qui lit le code...) voit que la constante (ou l'énumération) est typée, il peut adapter sa logique. C'est relativement simple. Même que ça me plait bien :)