Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Namespace organisation

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 07.11.2011, 02:11    Titel: Namespace organisation Antworten mit Zitat

huhu,

hab mal eine Frage zu Namespace und der Variablen deklarierungen...

eben dachte ich noch ich habe ein organisatorisches problem da ich innerhalb verschachtelter namespaces zugriff auf variablen anderer ebenen bräuchte und glaubte das würde so nicht gehen, jetzt hab ich hier mal ein ganz einfachen test als beispiel, bei dem ich merkte das es doch ganz einfach geht, ABER was mich dabei wundert ist, muss ich im namespace variablen nicht als shared oder common shared deklarieren?

hier kann ich ohne shared ect innerhalb einer sub auf alle variablen in den namespaces zugreifen...

Code:
Namespace Test1
    Dim bla as Integer = 99
    Namespace A
        Dim bla as Integer = 123
        Namespace B
            Dim bla as Integer = 456
           
            Sub PBla()
                ?Test1.bla
                ?Test1.A.bla
                ?Test1.A.B.bla
            End Sub
               
        End Namespace
       
    End Namespace
       
End Namespace

Test1.A.B.PBla()

sleep

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 07.11.2011, 11:18    Titel: Antworten mit Zitat

Ich kann noch mehr verwirren verwundert
Code:
Namespace Test1
  Dim bla as Integer = 99
  Namespace A
    Dim bla as Integer = 123
    Namespace B
      Dim bla as Integer = 456

      Sub PBla()
        ?Test1.bla
        ?A.bla ' dies find ich erstaunlich, nicht Test1.A.bla?
        ?bla  'hier bin ich im Namespace B
      End Sub

    End Namespace
  End Namespace
End Namespace

Test1.A.B.PBla()
?
?Test1.bla
?Test1.A.bla
?Test1.A.B.bla

Sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 07.11.2011, 18:09    Titel: Antworten mit Zitat

Soweit ich das immer verstanden habe, sind Namespaces sowieso SHARED, womit du ja auch in einer SUB (außerhalb des Namespaces) auf sie zugreifen kannst.

Voltas Beobachtung ist interessant; statt '?bla' funktioniert nämlich auch '?B.bla' grinsen
Ich kann mir das nur so erklären, dass man an dieser Stelle in allen drei Namespace-Ebenen gleichzeitig ist und nur die inneren Werte bei Bedarf die äußeren überschreiben.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sannaj



Anmeldungsdatum: 19.12.2010
Beiträge: 35

BeitragVerfasst am: 07.11.2011, 22:12    Titel: Antworten mit Zitat

Namespaces sind in sich gekapselt. Das heißt, das alle Variable in einem Namespace zuerst lokal, dann die Hierarchie aufsteigend gesucht werden.

Wenn du also dein Programm abspielst passiert:

In sub PBla(): '(befindet sich in Test1.A.B)
?bla
-> durchsuche Test1.A.B nach var bla -> var gefunden "Test1.A.B.bla"

?A.bla
-> durchsuche Test1.A.B nach ns A -> ns nicht gefunden.
-> durchsuche Test1.A nach ns A -> ns nicht gefunden.
-> durchsuche Test1 nach ns A -> ns gefunden "Test1.A"
-> durchsuche Test1.A nach var bla -> gefunden "Test1.A.bla"

?Test1.bla
-> durchsuche Test1.A.B nach ns Test1 -> ns nicht gefunden.
-> durchsuche Test1.A nach ns Test1 -> ns nicht gefunden.
-> durchsuche Test1 nach ns Test1 -> ns nicht gefunden.
-> durchsuche global ns nach ns Test1 -> ns gefunden "Test1"
-> durchsuche Test1 nach var bla -> gefunden "Test1.bla"

ns = Namespace
var = Variable
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 08.11.2011, 11:22    Titel: Antworten mit Zitat

Danke Sannaj,
so erklärt versteh ich es sogar.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz