Les énumérations comme type de variable

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
Guillot
Messages : 521
Inscription : jeu. 25/juin/2015 16:18

Les énumérations comme type de variable

Message 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
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Les énumérations comme type de variable

Message par Micoute »

Le mieux serait au développeur de se fabriquer un fichier de constantes personnelles qu'on chargerait avec IncludeFile.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Les énumérations comme type de variable

Message par JohnJohnsonSHERMAN »

Ca me semble une trés bonne idée ca... :)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Les énumérations comme type de variable

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Les énumérations comme type de variable

Message 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.
Avatar de l’utilisateur
Guillot
Messages : 521
Inscription : jeu. 25/juin/2015 16:18

Re: Les énumérations comme type de variable

Message 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)
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Les énumérations comme type de variable

Message 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.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Les énumérations comme type de variable

Message 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 :)
Répondre