Surcharge de procedure

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
dd1971
Messages : 14
Inscription : mar. 09/janv./2007 16:53

Surcharge de procedure

Message par dd1971 »

C'est vrai que c'est un concept plus utilisé en POO mais ca pourrait etre pratique.

DD
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Code : Tout sélectionner

Procedure.s my_left(string.s,stringlength)
Protected counter.l
Protected *ptr.l
Protected retstring.s

  counter = 0
  *ptr = @string
  While *ptr
    If counter = stringlength
      Break
    EndIf
    retstring + PeekS(*ptr,1)
    counter + 1
    *ptr + 1
  Wend
  
  ProcedureReturn retstring
EndProcedure


Macro Left(string,stringlength)
  my_left(string,stringlength)
EndMacro

z.s = Left("purebasic",4)
Debug z
Quelque chose comme ça ?
"Qui baise trop bouffe un poil." P. Desproges
dd1971
Messages : 14
Inscription : mar. 09/janv./2007 16:53

Message par dd1971 »

Non !

OpenConsole()

Procedure calculateur()
PrintN("Rien a signaler !")
EndProcedure

Procedure calculateur(x.w,y.w) ; ERREUR !
PrintN(str(x+y))
EndProcedure

Procedure calculateur(x.w,y.w,z.w)
PrintN(str(x+y+z))
EndProcedure


calculateur(1,1)

C'était juste une suggetion...
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

tu peux faire comme çà par ex:

Code : Tout sélectionner

OpenConsole()

Procedure calculateur0()
  PrintN("Rien a signaler !")
EndProcedure

Procedure calculateur1(x) 
  PrintN(Str(x))
EndProcedure

Procedure calculateur2(x, y) 
  PrintN(Str(x+y))
EndProcedure

Procedure calculateur3(x, y, z)
  PrintN(Str(x+y+z))
EndProcedure 

Procedure calculateur(x = #PB_Ignore, y = #PB_Ignore, z = #PB_Ignore)
  If x = #PB_Ignore : ProcedureReturn calculateur0()     : EndIf
  If y = #PB_Ignore : ProcedureReturn calculateur1(x)    : EndIf
  If z = #PB_Ignore : ProcedureReturn calculateur2(x, y) : EndIf
  ProcedureReturn calculateur3(x, y, z) 
EndProcedure 

calculateur(1, 5, 10)

Delay(1000)
ou plus simplement comme çà :

Code : Tout sélectionner

OpenConsole()

Procedure calculateur(x = #PB_Ignore, y = #PB_Ignore, z = #PB_Ignore)
  If x = #PB_Ignore
    ProcedureReturn PrintN("RAS")
  EndIf
  If y = #PB_Ignore 
    ProcedureReturn PrintN(Str(x))
  EndIf
  If z = #PB_Ignore 
    ProcedureReturn PrintN(Str(x+y))
  EndIf
  ProcedureReturn PrintN(Str(x+y+z))
EndProcedure 

calculateur(1, 5, 10)

Delay(1000)

Code : Tout sélectionner

OpenConsole()

Procedure calculateur(x = 0, y = 0, z = 0)
  ProcedureReturn PrintN(Str(x+y+z))
EndProcedure 

calculateur(1, 5, 10)

Delay(1000)
Dernière modification par Flype le lun. 15/janv./2007 22:26, modifié 2 fois.
Image
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Code : Tout sélectionner


Procedure calculateur(x.w,y.w=0,z.w=0)
  PrintN(Str(x+y+z))
EndProcedure 

OpenConsole()
  calculateur(1,2) 
  Input()
CloseConsole()
[EDIT]

Flype est plus rapide que moi :)
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

:lol:
"Qui baise trop bouffe un poil." P. Desproges
Répondre