Type-Verständnis
Übersicht

![]() |
TimBoBetreff: Type-Verständnis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann man bei der Methode New() eines Types Parameter übergeben und wie, wie macht man das ??
Wie kann man "öffentliche" und "private" Functionen und Methoden machen? Denn wenn ich z.B. TSchnee.RenderAll () mache , dann brauche ich ja keinen Pointer auf das spezifische Objekt. Wenn ich aber SchneeObjekt.Delete() mache, dann brauche ich ja ein Pointer darauf. Und wie kann ich solche Global bzw. Local machen. Also bspw. eine Funtion eines Types , die nicht im Mainprogramm sichtbar ist? Dann noch zu Variablen: Ich kann Global und Locale Variablen machen. Wie aber erstelle ich Variablen , die nur Type-Intern gelesen werden können? Also quasi nur Functions oder Methoden im Type sollen darauf zugriff haben, nicht aber das Mainprogramm. Danke schonmal ! TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei New kann man keine Parameter übergeben, da man die New Methode von Object überschreibt, dabei dürfen aber Rückgabewert und Parameter nicht geändert werden.
Public/Private gibt es nicht, das liegt dann lediglich an dir, das irgendwie einzuhalten. Von daher erübrigt sich auch der Rest deiner Fragen, du kannst alle Variablen überall auslesen, Variablen und Funktionen eines Types halt sowieso überall mit Type.Funktion oder Type.Variable und Fields und Methoden halt nur mit einem erstellten Objekt. |
||
Blessed is the mind too small for doubt |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Delete ist übrigens keine Methode, die man selbst aufrufen sollte. BlitzMax macht das automatisch.
Ich kenne zwei Alternativen zum Simulieren eines Konstruktors mit Parametern: 1. eine Init-Methode, die zur Vereinfachung Self zurückgibt 2. eine Create-Funktion, die ein neues Objekt zurückgibt (3. beides, wobei in der Create-Methode nur "Return New TMyType.Init(parameter)" steht) Es gibt außerdem einen Pseudostandard, dass man privates mit einem Unterstrich ("_") kennzeichnet. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Private und Public existieren in BMax nur Dateiweit, d.h. Du kannst mir Private einen Type vor dem Zugriff ausserhalb seines eigenen Quellcodes schützen. Dies gilt jedoch nur für ganze Types, einzelne Felder kann man nicht privat deklarieren.
Function ist das was Du als öffentlich bezeichnest - ein Zugriff auf die Klasse. Method ist das was Du als privat bezeichnet hast: ein Zugriff auf eine einzelne Instanz. Types in BMax haben KEINE interne Liste mehr, d.h. Du selbst bist dafür verantwortlich deine erstellten Instanzen zu verwalten. Das ist ein wesentlicher Unterschied zu BB. Befasse Dich in dem Zusammenhang am besten mit TList und TMap. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
vielen Dank erstmal für eure Beiträge !! Ich wollte auch eine "Public Shared List" machen, aber das hat sich ja dann erledigt, da es ja alles "Public" ist. ![]() Noch eine Frage: gibt es Shared Variablen in BMax ? Also ein Field , dass alle Objekte gleich haben? Oder muss ich die Liste als Globale Variable im Mainprogramm erstellen? Grüße TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
Lobby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, man kann statt der Felder auch einfach ein Global innerhalb des Types definieren.
Ein Beispiel: BlitzMax: [AUSKLAPPEN] Type TTest Innerhalb von Methoden kann man auf solche Globalen, wie gezeigt, mit Hilfe von self zurückgreifen. Zusätzlich kann man, wie bei innerhalb des Types definierten Funktionen, dieses auch weglassen (der Scope ist dort schließlich standardmäßig auf den entsprechenden Type gesetzt). Um von außen auf solch eine Variable Zugriff zu erlangen, gibt man einfach den Type als Scope an, also passend zum gegebenen Beispiel: BlitzMax: [AUSKLAPPEN] Local list:TList=TTest.myList |
||
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux |
- Zuletzt bearbeitet von Lobby am Mo, Feb 28, 2011 19:30, insgesamt einmal bearbeitet
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
ahhh !!! THX !!
jetzt hab ichs gerafft. Ich glaube der Ausflug in VBasic hat mein Verständnis aufpoliert =) |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
Shinkiro1ehemals "Espada" |
![]() Antworten mit Zitat ![]() |
---|---|---|
eine Möglichkeit:
Code: [AUSKLAPPEN] Type TTest Field a:Int Method Create:TTest( param1 ) Self.a = param1 Return Self EndMethod EndType |
||
Blog :: Ein RPG in 3 Monaten erstellen
Twitter :: News zum Projekt |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
steht auch alles hier drin: http://zehr.de/downloads/BlitzMax-OOP.pdf sollte man mal gelesen haben wenn man noch nicht so recht weiß wie bmax funktioniert |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich werde es mir auf jedenfall durchlesen ! Kannte nur die angegebene Adresse noch nicht. ![]() |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
kein problem, tu das.
findet sich (mit ein paar anderen nützlichen links) unter "szene" -> "links" -> "tutorials" oder so ähnlich auf dieser seite hier. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group