Funcs in Types
Übersicht

![]() |
pixelshooterBetreff: Funcs in Types |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, kann man Functions in nen Type tun, etwa:
Code: [AUSKLAPPEN] Type testtype
field textfeld$ function testprint() print textfeld end function end type damit man zum bespiel machen kann: Code: [AUSKLAPPEN] test.testtype = new testtype
test\textfeld = "hello, world" for druchgang.testtype = each testtype durchgang\testprint() next oder muss ich dafür auf andere Sprachen wie VB oder C++ ausweichen, die das können? |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
glaube das geht nur über umwege
bmax erlaubt sowas glaube |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein das kannst du nicht.
Funktionspointer unterstützt nur BlitzMax Das einzige was du machen kannst, ist eine bestimmte Funktion ausführen und die Type Instanz übergeben. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Das einzige was du machen kannst, ist eine bestimmte Funktion ausführen und die Type Instanz übergeben.
...bzw. du lässt das einen Parser erledigen, der jedesmal beim Aufruf der Funktion die Instanz übergibt und beim Einlesen die Funktionen auslagert. Ein Präprozessor eignet sich dafür hervorragend, wobei ich noch keinen in diesem Forum gesehen habe, der das konnte ![]() Meine Type Engine (die hier noch irgendwo im Codearchiv schlummert) war ein Ansatz dafür. Ich hab die Entwicklung allerdings abgebrochen, weil ich gemerkt habe, dass es sich nicht lohnt, Typestrukturen in Strings zu speichern (saublöde Idee, weiß gar nicht wie ich drauf gekommen bin ![]() Er würde dann z.B. aus diesem Code... Code: [AUSKLAPPEN] Type testtype
field textfeld$ function testprint() print textfeld end function end type test.testtype = new testtype test\textfeld = "hello, world" for druchgang.testtype = each testtype durchgang\testprint() next ...das machen: Code: [AUSKLAPPEN] Type testtype
field textfeld$ end type test.testtype = new testtype test\textfeld = "hello, world" for druchgang.testtype = each testtype testtype_method_testprint(durchgang) next function testtype_method_testprint(inst.testtype) print inst\textfeld end function Prinzipiell ist sowas nicht so schwer zu implementieren. Die Frage ist nur, ob sich der Aufwand lohnen würde. Funktionspointer kannst du damit allerdings nicht erreichen, da brauchst du schon BMax oder C/C++. |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
schade, aber trotzdem danke.
und ich denke mal, das geht auch nicht: Code: [AUSKLAPPEN] type test
field feld$ = "immer so" end type type speziell.test field speziellesfeld end type for durchgang.speziell = each speziell print durchgang\feld next denn feld würde von test an speziell vererbt (so denk ich mir das jedenfalls, aber das geht bestimmt auch nicht; höchstens, wenn ich jede obere instanz mit jeder unteren oder umgekehrt verlinken würde...) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein auch Type Extension existiert nur in BlitzMax
In Blitz3D / BlitzPlus sind Types nur das was als Struct aus C bekannt ist. Ein Speicherblock der Zugriff über "Variablen" statt nur über Peek / Poke erlaubt. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] type bla
field FELD$ end type type speziell field da.bla end type s.bla=New bla s\feld$="immer so" d.speziell=New speziell d\da=s for x.speziell=Each speziell print x\da\feld$ next Das geht. Ineinander verschachtelte types, also sowas hier: Code: [AUSKLAPPEN] type bla
field sa.bla end type geht auch nur um eventuelle weitere Fragen zu beseitigen ![]() |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das hab ich ja gemeint mit Links. Ist aber bestimmt nicht so gut für den Speicherplatz(so bei ca. 100.000 types oder so. Weiß nich wie viel platz so ne Linkvariable braucht. [nicht der type, aber bei a.bla = new bla ist ja a n Link auf den type, oder?]Auch 4 Byte wie ne Int oder mehr oder weniger??) | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eine Typereferenz braucht 4 Byte, das ist von daher kein Problem.
Allerdings ist das kein Extending. Mit jedem Untertyp wird die Aufrufkette um ein \... länger. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
kk, dann is das zwar nicht schön, aber zu verkraften. thx | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group