Frage zu Const in einem Type
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
remaBetreff: Frage zu Const in einem Type |
Fr, Okt 14, 2005 12:28 Antworten mit Zitat |
|
---|---|---|
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 |
Fr, Okt 14, 2005 12:41 Antworten mit Zitat |
|
---|---|---|
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 |
Fr, Okt 14, 2005 12:43 Antworten mit Zitat |
|
---|---|---|
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 |
Fr, Okt 14, 2005 12:47 Antworten mit Zitat |
|
---|---|---|
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 |
||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
rema |
Fr, Okt 14, 2005 14:54 Antworten mit Zitat |
|
---|---|---|
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
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 |
Fr, Okt 14, 2005 22:25 Antworten mit Zitat |
|
---|---|---|
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 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. |
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group