Strukturen, die sich selbst enthalten

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
4Planes
Beiträge: 37
Registriert: 19.11.2020 17:08

Strukturen, die sich selbst enthalten

Beitrag von 4Planes »

Hallo,

ist es erlaubt, dass eine Struktur sich selbst enthält?

Code: Alles auswählen

Structure struc
    ...
    Map subgroup.struc()
EndStructure
  
NewMap groups.struc()
Dieser Code funktioniert tadellos. Aber ich wollte vorsichtshalber mal nachfragen, ob ich damit rechnen kann, dass das immer klappt, oder es doch nur zufällig funktioniert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Strukturen, die sich selbst enthalten

Beitrag von STARGÅTE »

Ja das geht und ist "erlaubt", solange es sich um Unterelemente handelt die nachträglich hinzugefügt werden müssen, also List und Map. Mit Array oder reinen Strukturen geht das nicht, dann nur mit Pointern.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: Strukturen, die sich selbst enthalten

Beitrag von jacdelad »

Mündet das nicht in einer Endlosschleife?

Code: Alles auswählen

Group()\Subgroup()\Subgroup()\Subgroup()\...
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Strukturen, die sich selbst enthalten

Beitrag von STARGÅTE »

Nein, du musst ja in jeder Ebene selbst das Element Subgroup() mit AddMapElement(\Subgroup()) hinzufügen.
Beim Initialisieren der Struktur, ist die Map leer und es wird gar nicht erst in struc hineingegangen.

Aber natürlich du kannst "on-the-fly" folgendes machen:

Code: Alles auswählen

Structure struc
	Value.i
	Map subgroup.struc()
EndStructure

Define groups.struc

groups\subgroup("A")\subgroup("B")\subgroup("C")\subgroup("D")\Value = 1

Debug groups\subgroup("A")\subgroup("B")\subgroup("C")\subgroup("D")\Value
Hier gibst du selbst die Tiefe an, und die Map-Elemente werden Stück für Stück zur Laufzeit hinzugefügt.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: Strukturen, die sich selbst enthalten

Beitrag von jacdelad »

Ah ja, stimmt, die Map ist ja leer. Erst wenn ein Element erzeugt wird enthält es wieder die Struktur.
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Antworten