Funktionen: Types mit Standardparametern

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Dreamora

Betreff: Funktionen: Types mit Standardparametern

BeitragMo, Sep 20, 2004 9:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollte eigentlich versuchen, einer Funktionen einen Type mit "Standardübergabewert" zu verpassen.

Dabei scheiterte ich am Compiler und seinem Verhalten.
Dies hier dient hauptsächlich dazu, Neulingen ähnliche Probleme zu ersparen.


Code: [AUSKLAPPEN]
Type test1
   Field a
   Field b
   Field c
End Type

Const testi.test1 = New test1


Dieser Sourcecode wird vom Compiler mit "type 'test1' not found" commentiert in der const Zeile.

wenn man
Code: [AUSKLAPPEN]
function test( trara.test1 = null )


versuchen möchte, so beharrt der Compiler stur darauf, dass man nur Konstanten zuweisen kann.
0 fällt ja prinzipiell weg wegen "illegal type conversion"

Was mich jetzt interessieren würde, ist, ob jemand so ganz spontan eine Idee hat, wie man da einen Standardparameter reinbekommen kann, so das man nicht zwangsweise eine Typeinstanz mitübergeben muss.
( Ich habe/hätte danach eigentlich einen check auf "Null", der dann den globalen Standardwert setzt )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Thoem

BeitragMo, Sep 20, 2004 10:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum willst Du einen Type mit Standartparametern übergeben? Wie soll das funktionieren?
 

Dreamora

BeitragMo, Sep 20, 2004 10:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wäre "hilfreich" gewesen für eine QuadTree Struktur

QUAD_Update( camera, SubLevel = 1, StartNode.QUAD_Node = Null ) bzw
QUAD_Update( camera, SubLevel = 1, StartNode.QUAD_Node = QUAD_BaseNode )

Aber er schluckt beides net. Den BaseNode kann ich net als Const deklarieren ( 1. Fehler ) und Null sieht Blitz3D wohl als Funktion statt als konstante.

Dadurch hätte ich ein wenig billiger in der Mainloop zb einfach
QUAD_Update ( cam ) aufrufen können und die ruft danach das ganze auf Per-Node basis rekursiv auf um alles was im sichtbereich ist anzuzeigen.

Ich brauch das für mein aktuelles Projekt, da ich die welt als 3D Modell habe und das ohne die QuadTree zerlegung zu nem üblen overkill würde ( vor allem zusammen mit den geplanten AI berechnungen )

dadurch kann ich die aktiven berechnungen auf die sichtbaren Knoten beschränken ..

Naja muss ich wohl den minimalismus einsparen und den BaseNode mitübergeben im Updateaufruf.
Hat mich ehrlich gesagt nur gewundert, dass NULL was normalerweise als Pointer-Konstante gehandhabt wird, von Blitz3D net als solche betrachtet wird.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Jolinah

BeitragMo, Sep 20, 2004 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Reicht es nicht wenn du statt einem Standardwert einfach die Funktion entsprechend aufrufst?

Code: [AUSKLAPPEN]

QUAD_Update(camera,SubLevel,Null) bzw.
QUAD_Update(camera,SubLevel,Objekt)



Die Funktion halt entweder mit Null oder einem Objekt aufrufen.
Weil soviel ich weiss müsste das gehen und Null kann für jeden Type eingesetzt werden.

Code: [AUSKLAPPEN]

Function QUAD_Update(camera,SubLevel = 1, StartNode.QUAD_Node)
  If not StartNode = Null
    ;Wenn gesetzt
  Else
   ;Wenn nicht gesetzt
  Endif
End Function


Ich verstehe schon was du wolltest. Und ist eigentlich auch komisch das es nicht möglich ist...
 

Edlothiol

BeitragMo, Sep 20, 2004 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Standardwert geht wirklich nicht, weiß allerdings nicht warum Null nicht konstant ist Rolling Eyes
 

CodeMaster

BeitragMo, Sep 20, 2004 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja also falls nix mehr geht, kannst du ja auch das Handle übergeben:Code: [AUSKLAPPEN]
function quad_update(camera,sublevel=1,starnode=0)
 if not object.quad_node(starnode) = null then
  ...
 endif
end function

...

quad_update(irgendeinekamera,irgendeinlevel,handle(irgendeinquad))
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group