Prototypes
Publié : mer. 23/mai/2012 12:43
Salut,
J'ai essayé de comprendre une des utilisation des Prototypes... Je suis donc parti de ce code du forum anglais :
Cela m'a bien servi, mais j'ai sorti bar et set du tableau, remplacé ce même tableau par une liste et j'ai viré le "Global". Tout cela pour voir si j'avais bien saisi le truc.
Ca à l'air de fonctionner, mais c'est le genre de truc qui me font fumer le cerveau
!
Alors si cela peut aider quelqu'un à piger l'utilité du bazar voici mon exemple :
Bye
J'ai essayé de comprendre une des utilisation des Prototypes... Je suis donc parti de ce code du forum anglais :
Code : Tout sélectionner
Prototype bar(z.i)
Prototype set(x.i, y.i)
Structure foobar
; Members
x.i
y.i
; Methods
bar.bar
set.set
EndStructure
Global Dim foo.foobar(1)
Procedure.i bar(z.i)
result.i = (foo(0)\x + foo(0)\y) * z
ProcedureReturn result
EndProcedure
Procedure set(x.i, y.i)
foo(0)\x = x
foo(0)\y = y
EndProcedure
foo(0)\bar = @bar()
foo(0)\set = @set()
foo(0)\set(10, 20)
result.i = foo(0)\bar(30)
Debug result
Ca à l'air de fonctionner, mais c'est le genre de truc qui me font fumer le cerveau
Alors si cela peut aider quelqu'un à piger l'utilité du bazar voici mon exemple :
Code : Tout sélectionner
Prototype get(z.i, *Coord.Coord)
Prototype set(x.i, y.i, *Coord.Coord)
Declare.i get(z.i, *Coord.Coord)
Declare.i set(x.i, y.i, *Coord.Coord)
Structure xy
; Members
x.i
y.i
EndStructure
Structure Coords
; Members
List Pos.xy()
; Methods
get.get
set.set
EndStructure
Coord.Coords
Coord\get = @get()
Coord\set = @set()
;Test ------
Coord\set(10, 20, @Coord)
result.i = Coord\get(30, @Coord)
Debug result
Coord\set(35, 9, @Coord)
result.i = Coord\get(30, @Coord)
Debug result
Coord\set(11, 8, @Coord)
result.i = Coord\get(30, @Coord)
Debug result
CallDebugger
;-----------
;{ Procedures }
Procedure.i get(z.i, *Coord.Coords)
result.i = (*Coord\Pos()\x + *Coord\Pos()\y) * z
ProcedureReturn result
EndProcedure
Procedure set(x.i, y.i, *Coord.Coords)
AddElement(*Coord\Pos())
*Coord\Pos()\x = x
*Coord\Pos()\y = y
EndProcedure
;}