OO oder Old BB. Oder beides?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Suco-X

Betreff: OO oder Old BB. Oder beides?

BeitragFr, Feb 04, 2005 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Tach.
Seid dem Core 1.03 Update und der Änderung von Bmax ist mir folgendes aufgefallen. Man kann ohne viele umstände seinen Code auf OO und None OO auslegen. Zumindestens was die Handhabung betrifft.

Code: [AUSKLAPPEN]

Type TTest
   Field Wert:Int = 0
   
   Method Set(Wert:Int)
      self.Wert = Wert
   End Method
   
   Method Get:Int()
      Return self.Wert
   End Method
   
End Type




Local TempObject:Int = CreateTest()
SetTest(TempObject,100)
Print Get(TempObject)


Local TempObject2:TTest = CreateTest()
TempObject2.Set(200)
Print TempObject2.Get()



Release TempObject
TempObject2 = Null

Print Get(TempObject)
Print TempObject2.Get()




Function CreateTest:TTest()
   Return New TTest
End Function

Function SetTest(Test:TTest,Wert:Int)
   Test.Set(Wert)
End Function

Function Get:Int(Test:TTest)
   Return Test.Get()
End Function


Wir man hier sieht, erkennt Bmax automatisch ob man jetzt das Object haben will oder es wie im alten BB(Integer Vars) handhaben möchte.
Ich finde das ist eine sehr feine Sache und will es hiermit denjenigen mitteilen, die es noch nicht entdeckt haben.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

TheShadow

Moderator

BeitragFr, Feb 04, 2005 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
cool... war das früher anders?
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Suco-X

Betreff: ....

BeitragFr, Feb 04, 2005 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde das ist eine sehr feine Sache und will es hiermit denjenigen mitteilen, die es noch nicht entdeckt haben.
Früher war es auch so. Nur wo jetzt Release auf Int umgestellt wurde und ich nach dem Sinn gesucht habe, ist mir das erst aufgefallen. Und sowas fällt einem ja auch nicht direkt ins Auge da es eigentlich unlogisch ist.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

regaa

BeitragSa, Feb 05, 2005 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, danke für den Tipp. Ich hab es verstanden seh da aber nicht ganz den Sinn drin. Jemand der es gelernt hat Typen anzusprechen wird doch wohl kaum auf Instanzen über Funktionen zugreifen. Ist irgendwie uncool^^.

Naja, man lernt nie aus.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net

TheShadow

Moderator

BeitragSa, Feb 05, 2005 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
das ganze ging schon früher mit Images

LOCAL x:int=LOADIMAGE(...)
LOCAL y:Timage=LOADIMAGE(...)

generell sollte man immer das zweite nehmen, weil beim ersten deutlich höherer overhead ist... da wird dann dauernd im Hintergrund "konvertiert"
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Suco-X

Betreff: ........

BeitragSa, Feb 05, 2005 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Sinn hat das ganze in erster Linie bei Modulen. So versorgt man die Leute die noch auf das alte BB stehen und es nicht so mit der OOP haben.
Beim speed ist der unterschied Minimal.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

Dreamora

BeitragSo, Feb 06, 2005 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Instanzen über Int hat auch ein weiteres Problem: Die Ints müssen intern auf eine Handlingstruktur zugreifen ( vermute Array bzw. Linked List da BM die als ne indexed List implementiert hat ). Bei wenigen Typeinstanzen kein Problem. Bei einem Partikelsystem und oder anderen anzahlintensiven Dingen kann das jedoch "recht" am Speed kratzen wenn du mit vorliebe auf die neuesten Partikel zugreifen würdest zb ( verglichen mit realen Types natürlich nur, nicht langsam im Sinn von total tödlich Smile )

Das mit Release war übrigens auch schon immer so, also das es nur für Int Typeinstanzrepresentanten war, nur die Fehlermeldung wenn du es auf echte Types anwenden willst ist neu ( wurde ja vorhin von vielen so angewandt und führte zu Memory Leaks, deshalb die erzwungene Meldung )

Einen Nachteil von Int Handlern gegenüber Typehandlern darf man jedoch nie vergessen: Bei Types motzt der Compiler schon, dass man versucht zuweisungen zu machen die illegal sind. Bei Int rennt man da in einen Runtimeerror, der unter Umständen nur extrem umständlich zu finden ist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group