method vs function

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

BMaxler

Betreff: method vs function

BeitragMo, Jul 09, 2007 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist der Unterschied zwischen method und function?
Meine Suche hat leider kein Ergebnis gebracht.
 

Dreamora

BeitragMo, Jul 09, 2007 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Methoden werden auf dem Objekt selbst ausgeführt (-> es gibt ein self was das Objekt darstellt). Das gleiche gilt für "field" auf Types

Function werden hingegen immer nur auf der Klasse ausgeführt, sie haben kein self also kein Objekt das sie ausführt. Das gleiche gilt für "global" und "const" auf Type


Am besten einfach ma in der Hilfe nachsehen und herumexperimentieren (falls du kein englisch kannst, nutz kein BM sorry, es gibt kein deutsches BM)


moved da im falschen Board
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

BMaxler

BeitragMo, Jul 09, 2007 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe ein bisschen rumprobiert.
Folgendes Beispiel funktioniert nur mit method:

Code: [AUSKLAPPEN]
Type test

   Field x:Int
   
   Method change(c:Int)
      x = c
   EndMethod

   Method printout()
      Print x
   EndMethod

   Function printout2()
      Print x
   EndFunction

EndType

Local x:test = New test
x.change(3)
x.printout()


Der Aufruf x.printout2() ist nicht zulässig.
Wie greife ich denn auf types zu, ohne ein Objekt mit new zu erstellen?
 

Dreamora

BeitragMo, Jul 09, 2007 12:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Indem du den Klassennamen nutzt.

Dies wäre in diesem fall test.printout()
Aber das wird nicht funktionieren.
Denn x ist ein Field, das heisst es existiert auf Objekten, nicht jedoch für die Klasse im allgemeinen.

Du kannst in Funktionen, wenn du nicht auf einem Objekt explizit arbeitest, nur auf global und const der entsprechenden Klasse zugreifen. (static in C++)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Mo, Jul 09, 2007 12:55, insgesamt einmal bearbeitet

BMaxler

BeitragMo, Jul 09, 2007 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, ich habs verstanden.
Vielen Dank für die schnellen Antworten.
 

Lumooja

BeitragDi, Jul 10, 2007 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Intressant... Ich hab mich immer gewundert, ob man wirklich ein grosses Array von "Daten"-Objekten erstellen sollte, z.B. ein "4D Punkt" Objekt, das z.B. die Methode "SetPos(x,y,z,a)" hat.

Würden dann nicht die einzelnen Methoden Speicher fressen? Wenn ja, sollte ich dann nicht eher eine seperate minimal "4D Punkt" Klasse erstellen die nur die Koordinaten enthält, und dann eine seperate "Methoden für 4D Punkt" Klasse erstellen? Oder sollte man immer Funktionen als Methoden verwenden, wenn diese keinen Speicher fressen (außer vielleicht die Referenzaddresse)?
 

Dreamora

BeitragDi, Jul 10, 2007 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du dir über solche Dinge Gedanken machen willst, bleibst du besser bei C++ wo du mit solchen Dingen mehr Performance rausholen kannst Smile

In BM ist der Unterschied sehr minimal und meist eher zu gunsten von OO und methoden als von Funktionen (die eine Referenz haben im Unterschied zu Methoden) welchen du das Objekt überhaupt erst übergeben musst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group