Seite 1 von 1
Verschachtelte Interfaces
Verfasst: 20.03.2013 15:10
von Josh
Ich hätte gern verschachtelte Interfaces analog zu den Strukturen, ungefähr so:
Code: Alles auswählen
Interface ITEST1
a()
b()
c()
EndInterface
Interface ITEST2
d()
e()
f()
Test1.ITEST1
EndInterface
Define Test.ITEST2
Debug Test\Test1\a()
Hat vielleicht jemand einen Trick auf Lager, wie man das simulieren könnte? Verwendung von Strukturen, Prototypes, Macros oder so.
Thxs
Josh
Re: Verschachtelte Interfaces
Verfasst: 20.03.2013 15:58
von helpy
Hi,
Die Syntax von Interface erlaubt ausschließlich Methoden als Elemente von Interface:
Die einzige Möglichkeit ist die, dass eine Methode ein Interface zurückgibt:
Code: Alles auswählen
EnableExplicit
Interface ITEST1
a()
b()
c()
EndInterface
Interface ITEST2
d()
e()
f()
GetObjectTest1()
EndInterface
Define oTest2.ITEST2
Define oTest1.ITEST1
oTest1 = oTest2\GetObjectTest1()
oTest1\a()
Re: Verschachtelte Interfaces
Verfasst: 20.03.2013 16:44
von NicTheQuick
Wenn es nur um das Verschachteln geht, dann kann man das rein mit Structures und Prototypes lösen:
Code: Alles auswählen
Prototype.i Zero()
Prototype.i One(a.i)
Structure mySubClass_new
a.Zero
b.One
EndStructure
Structure myClass_new
a.Zero
b.One
d.mySubClass_new
EndStructure
Procedure.i Function_Zero()
ProcedureReturn 5
EndProcedure
Procedure.i Function_One(a.i)
ProcedureReturn -2 * a
EndProcedure
Procedure.i Function_Zero_Sub()
ProcedureReturn 10
EndProcedure
Procedure.i Function_One_Sub(a.i)
ProcedureReturn a
EndProcedure
Procedure myClass_new()
Protected *this.myClass_new = AllocateMemory(SizeOf(myClass_new))
If (Not *this)
ProcedureReturn 0
EndIf
With *this
\a = @Function_Zero()
\b = @Function_One()
\d\a = @Function_Zero_Sub()
\d\b = @Function_One_Sub()
EndWith
ProcedureReturn *this
EndProcedure
Define *object.myClass_new = myClass_new()
Debug *object\a()
Debug *object\b(1)
Debug *object\d\a()
Debug *object\d\b(1)
Wie man sieht, ist das dann allerdings etwas komplizierter.
Re: Verschachtelte Interfaces
Verfasst: 20.03.2013 17:15
von Chimorin
Ich habe vorher noch nie von Interfaces gehört, scheinen aber sehr wichtig zu sein
Ich werfe mal meinen Hut mit in den Ring... Beim Beispiel klappt das
Code: Alles auswählen
Interface ITEST1
a()
b()
c()
EndInterface
Interface ITEST2 Extends ITEST1
d()
e()
f()
EndInterface
Define Test.ITEST2
Debug Test\a()
Re: Verschachtelte Interfaces
Verfasst: 20.03.2013 17:22
von ts-soft
Bananenfreak hat geschrieben:Ich werfe mal meinen Hut mit in den Ring... Beim Beispiel klappt das

Dein Beispiel entspricht:
Code: Alles auswählen
Interface ITEST2
a()
b()
c()
d()
e()
f()
EndInterface
Define Test.ITEST2
Debug Test\a()
und das ist nicht das gesuchte

Re: Verschachtelte Interfaces
Verfasst: 20.03.2013 17:23
von Josh
Bananenfreak hat geschrieben:Ich werfe mal meinen Hut mit in den Ring... Beim Beispiel klappt das

Ja, aber eben ohne das Subinterface ^^
NicTheQuick hat geschrieben:Wie man sieht, ist das dann allerdings etwas komplizierter.
Cool, danke. Genau das habe ich gesucht. Besonders wichtig war mir auch, dass die Kommandozeilenhilfe funktioniert.
Ich habe zwar mit Strukturen und Prototypes herumgebastelt, aber nichts zusammengebracht
