Frage zu Const in einem Type

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

rema

Betreff: Frage zu Const in einem Type

BeitragFr, Okt 14, 2005 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will in einem Type auch meine Konstanten verwalten und nicht Global halten.
Wen ich aber die Function foo aufrufe und zbsp keine _option angegeben wurde, so sollte
_option die Standardwerte übernehmen, also FLAG. Nun bekomme ich aber eine Fehlermeldung,
dass FLAG nicht gefunden wurde.

Wiso geht dies nicht? Mache ich einen Gedankenfehler, oder ist dies prinzipiel nicht möglich?

Code: [AUSKLAPPEN]
Type Test

  Const FLAG = 1

  Field x
  Field y
  Field option

  Function foo(_x,_y,_option = FLAG)

    _n:Test = new Test
    _n.x = _x
    _n.y = _y
    _n.option = _option

  End Function

End Type

bruZard

BeitragFr, Okt 14, 2005 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee, das kann so nicht funktionieren ... Du erzeugst erst innerhalb der Funktion eine neue Referenz auf Test. Das bedeutet dass diese Referenz (und somit auch die Konstante) bis zum New() nicht existiert, Du verwendest Sie aber bereits im Kopf.

Wenn Du das hier machst: myTest:Test = New Test .... myTest.foo(100,100) ... sollte es gehen.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

DivineDominion

BeitragFr, Okt 14, 2005 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde diese schreibweise in bmax blöd...
In Java z.b. sind consts "public static". Und eine function statt method heißt auch "public static".
Da ist nämlich auch der Zusammenhang zu sehen.
Es sit von außen aufrufbar. Von der Instanz soll man das dann nicht machen sondern vom Type/der Klasse selber:

Code: [AUSKLAPPEN]
Type Test

  Const FLAG = 1

  Field x
  Field y
  Field option

  Function foo(_x,_y,_option = Test.FLAG)

    _n:Test = New Test
    _n.x = _x
    _n.y = _y
    _n.option = _option

  End Function

End Type
christian.tietze@gmail.com - https://christiantietze.de
macOS

bruZard

BeitragFr, Okt 14, 2005 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
So gehts auch:
Code: [AUSKLAPPEN]

Strict

Type Test

  Const FLAG:Byte = 1

  Field x:Short
  Field y:Short
  Field option:Byte

  Function foo(x:Short,y:Short,option:Byte = 0)
    Local _n:Test = New Test
      If Not option Then option = FLAG
    _n.x = x
    _n.y = y
    _n.option = option

  End Function

End Type

Local tst = Test.foo(100,100)


btw: Ich finde es furchtbar wenn Ihr nie Strict verwendet und niemals die Typen der Variablen definiert ... naja, Euer Ding, ich finde es jedenfalls furchtbar Smile
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

rema

BeitragFr, Okt 14, 2005 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
bruZard hat Folgendes geschrieben:
btw: Ich finde es furchtbar wenn Ihr nie Strict verwendet und niemals die Typen der Variablen definiert ... naja, Euer Ding, ich finde es jedenfalls furchtbar Smile


Keine Sorge, ich verwende strict, nur wollte ich nicht den ganzen Programmcode hier veröffentlichen.

Also, ich nehme die Const doch als public. Dementsprechtend hat sich das Problem von alleine Gelösst.

Trotzdem danke für die Hilfe!
 

Dreamora

BeitragFr, Okt 14, 2005 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
bruZard hat Folgendes geschrieben:

btw: Ich finde es furchtbar wenn Ihr nie Strict verwendet und niemals die Typen der Variablen definiert ... naja, Euer Ding, ich finde es jedenfalls furchtbar Smile


Letzteres wird sich dank kommendem SuperStrict ja von selbst entsorgen. Dann gibts kein Autodef Int mehr und Funktionen ohne Rückgabetype akzeptieren auch keine Rückgabewerte mehr.
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