Seite 1 von 1

Module und "Globale" Strukturen

Verfasst: 11.07.2013 21:01
von Nero
Ich bin gerade am testen der Module der 5.20 Beta 5

Allerdings ist mir aufgefallen das ich keine Strukturen in den Modulen verwenden kann die ausserhalb das Modules selbst erstellt wurden. :?

Code: Alles auswählen

Structure Struct
  a.i
  b.i
EndStructure


DeclareModule Test

  Declare Test(abc.Struct)

EndDeclareModule


Module Test

  Procedure Test(abc.Struct)
    Debug Test\a
  EndProcedure
 
EndModule

UseModule Test

xyz.Struct
xyz\a = 123
xyz\b = 456

Test(xyz)

UnuseModule Test
Mache ich da was falsch?
Wen nicht kann mir jemand sagen warum das so ist?
Abkapselung hin und her aber es ist echt nervig wen ich meine Strukturen die ich öfters wieder brauche in jedem Modul neu angeben muß.
Ich mein es sind ja eigentlich nur angaben über Datentypen mehr nicht die sollte man wenigstens irgendwie global verfügbar machen können (meine meinung :lol: ).

Re: Module und "Globale" Strukturen

Verfasst: 13.07.2013 23:14
von Andreas21
Strukturen die außerhalb des Moduls sind, sind in Modulen nicht bekannt.
Der Code im Modul ist abgekapselt.
Somit auch die Strukturen.

Muts also alle Strukturen die in den Modul gebraucht werden auch im Modul deklarieren.

Hat auch den vorteil das man wenn man Module weiter gibt, nicht auf namen von Strukturen achten muss.
Genauso wie bei Prozeduren oder Variablen namen.

Re: Module und "Globale" Strukturen

Verfasst: 14.07.2013 16:29
von Nero
Andreas21 hat geschrieben:Strukturen die außerhalb des Moduls sind, sind in Modulen nicht bekannt.
Der Code im Modul ist abgekapselt.
Somit auch die Strukturen.

Muts also alle Strukturen die in den Modul gebraucht werden auch im Modul deklarieren.

Hat auch den vorteil das man wenn man Module weiter gibt, nicht auf namen von Strukturen achten muss.
Genauso wie bei Prozeduren oder Variablen namen.
Das ist ja richtig doch wäre es praktisch wen man "globale" Strukturen definieren könnte.
Der Grund dafür ist auch recht einfach, wen ich ein Projekt habe in dem Daten zwischen Modulen hin und her geschaufelt werden
dann müsste ich bei 10 Modulen auch 10 mal die Struktur neu definieren.
Das ist dann echt nervtötend wen man 100 Strukturen hat.

Allerdings wäre das noch nicht mal so schlimm da ich ja per Include einfach die Strukturdatei einbinden kann nur hier hat man wieder
das Problem das man auch einen Pfad angeben muss und damit der im ganzen Programm gleich ist gibt man diesen
am besten über eine zentrale Konstante an ..... /:->
Ach ja das geht ja nun auch nicht :lol:

Die Sache die mich halt etwas stört ist das man diese Zwei dinge die sich nach ihrer Definition eh nicht ändern lassen nicht global nutzen lassen.
Das ist von daher auch etwas merkwürdig da ich im ganzen Programm zugriff auch alle PB eigenen Konstanten habe egal ob Modul oder nicht,
aber auf eigene hab ich keinen. :?

Wie gesagt Abkapselung hin oder her aber ich finde es macht keinen sinn den Zugriff auf Datentypen und Konstanten zu verweigern.
Und das Argument das man so einfach das Modul weitergeben kann und verwenden ohne sich Gedanken über Kollisionen machen zu müssen
ist eher schwach.
Mal ehrlich, wen ich ein großes Projekt betreibe dann gibt es auch Kommunikation zwischen den Teammitgliedern oder Teammeetings bei
denen man sich abspricht und kann Kollisionen vermeiden.
Oder wen man ein PlugIn für eine Software schreibt so ist diese eigentlich immer gut genug Dokumentiert um so was zu vermeiden.

Ich sage ja nicht das man es generell zulassen sollte sondern eher so das man sie als Global definieren kann eventuell so in der Art.

Code: Alles auswählen

Globalisation

Enumeration
#Test_1
#Test_2
EndEnumeration

Structure Test
 a.i
 b.i
EndStructure

EndGlobalisation

Re: Module und "Globale" Strukturen

Verfasst: 14.07.2013 16:43
von c4s
Du kannst dir ein spezielles Modul anlegen, in dem alle "globalen" Strukturen etc. definiert werden. Dieses Haupt-Modul kannst du dann mit UseModule innerhalb deiner Unter-Modulen verwenden.
Eine sehr ausführliche und aufschlussreiche Erklärung unter anderem hierzu gibt es von freak im englischen Forum: http://www.purebasic.fr/english/viewtop ... 92#p416292


P.S. Zeilenumbrüche (im Gegensatz zu Absätzen) bitte lieber dem Browser überlassen... ;)

Re: Module und "Globale" Strukturen

Verfasst: 14.07.2013 17:17
von Nero
:praise:

Ah :lol: danke :oops: daran hab ich überhaupt nicht gedacht.

:allright: