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: 6999
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: 348
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
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()\...
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
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: 348
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
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.
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Antworten