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
;}