Type Verschachtelung möglich?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Midimaster

Betreff: Type Verschachtelung möglich?

BeitragFr, Mai 21, 2021 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Methode meines Haupttyps (soll wie eine Klassen wirken) gibt eine Instanz vom TYPE mmStream zurück.

BlitzMax: [AUSKLAPPEN]
SuperStrict 
Local MiniAudio:My = New My

Local MyStream:mmStream = MiniAudio.GetStream()

Type My

Method GetStream:mmStream()
Local loc:mmStream=New mmStream
loc.a=123
Return loc
End Method

End Type

Type mmStream
Field a%
End Type



Das functioniert ja so ganz problemlos. Ich finde es nur wenig elegant. Besser würde mir gefallen der User müßte bei der Typdefinition meinen Klassen-Bezeichnung vorneweg nennen:

BlitzMax: [AUSKLAPPEN]
Local MyStream:My.mmStream = MiniAudio.GetStream()


oder noch besser:

BlitzMax: [AUSKLAPPEN]
Local MyStream:Miniaudio.mmStream = MiniAudio.GetStream()



Gibt es so was? So eine Art Type im Type?
BlitzMax: [AUSKLAPPEN]
Type My
Method GetStream:mmStream()
Local loc:mmStream=New mmStream
loc.a=123
Return loc
End Method

Type mmStream
Field a%
End Type
End Type
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Farbfinsternis

BeitragFr, Mai 21, 2021 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein
Farbfinsternis.tv

Xeres

Moderator

BeitragFr, Mai 21, 2021 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist denn dein Ziel dabei? Wenn du statt einer Methode eine Funktion benutzt, kannst du den Type als Namespace benutzen:

BlitzMax: [AUSKLAPPEN]
SuperStrict

Type MiniAudio

Function GetStream:mmStream()
Local loc:mmStream = New mmStream
loc.a=123
Return loc
End Function

End Type

Type mmStream
Field a%
End Type

Local stream:mmStream = MiniAudio.GetStream()
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragFr, Mai 21, 2021 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Local stream:mmStream = MiniAudio.GetStream()


ich möchte der Typ-Bezeichnung auf der "linken" User-Seite einen Namespace zuordnen:
Code: [AUSKLAPPEN]
Local stream:My.Stream = My.GetStream()


so dass die Type-Bezeichnung halt aus zwei Teilen besteht. Ist aber nur kosmetisch. Wenn es nicht möglich ist bleibe ich bei "mmStream" als Typ-Bezeichnung
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Xeres

Moderator

BeitragFr, Mai 21, 2021 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist keine gültige BM Syntax, ganz einfach.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragFr, Mai 21, 2021 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
schade...

da hab ich gleich noch so eine bescheuerte Frage, die mir schon ewig im koopf rumgeht...

manchmal denke ich, ich hätte früher mal die TList ganz anders gehandhabt. Vielleicht wisst ihr da ja was drüber... vielleicht war die Syntax aber auch aus einer anderen Sprache.

TList speichert ja Objecte und kann deshalb auch verschiedenste Typen in die selbe Liste aufnehmen. anschließend muss man dann immer casten. Irgendwie erinnere ich mich das man TList auch so definieren konnte, dass es nur einen bestimmen Typ aufnehmen darf. Dafür entfällt dann das casten...

Gab es sowas bei BlitzMax?

so was wie (Fantasie-syntax):
Code: [AUSKLAPPEN]
local Liste:Tlist[String] = New TList[String]
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Farbfinsternis

BeitragSa, Mai 22, 2021 9:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das geht.
Code: [AUSKLAPPEN]
New TList<String>
Farbfinsternis.tv

Midimaster

BeitragSa, Mai 22, 2021 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
danke.. mensch ich wußte echt nicht mehr wie die syntax mal war. ich probiers gleich aus.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Midimaster

BeitragFr, Nov 26, 2021 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Farbfinsternis hat Folgendes geschrieben:
Ja das geht.
Code: [AUSKLAPPEN]
New TList<String>


spät, aber besser als nie...

jetzt hab ich das mit der auf einen Type beschränkten TList mal probieren wollen. Aber das was Farbfinsternis da geschrieben hat funktioniert bei mir nun doch nicht:

alle 3 Varianten geben bei mir eine Fehlermeldung:
BlitzMax: [AUSKLAPPEN]
Global t:TList = New TList<String>
bzw...
Global t:TList<String> = New TList
bzw...
Global t:TList<String> = New TList<String>


was mache ich falsch?

Farbfinsternis

BeitragSo, Nov 28, 2021 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich war hier zu vorschnell und habe es mit Monkey verwechselt. Sorry.
Farbfinsternis.tv

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group