Kurt: Konzept der Namensräume; Global, Dynamic und Lexical Scope

Beitrag lesen

Hi

schönes Beispiel, aber zwo Anmerkungen:

function test() {

var x = 0;
if(1) {
  var x = 2; //[2]
}
alert(x)
}
test()


> gibt 2  
>   
> ~~~perl

sub test {  

>  my $x = 0;  
>  if(1) {  
>   my $x = 2; # [1]  
>  }  
>  print $x;  
> }  
> test()

gibt 0

[1] lässt man hier das my weg, kommt auch 2 raus.

[2] mich wundert warum Javascript (zumindest im FF ausprobiert) hier nicht meckert... m.E. macht es keinen Sinn "var x" mehrmals innerhalb des gleichen Geltungsbereichs anzugeben, die Console sollte hier wenigstens eine Warnung ausgeben. Oder kann jemand hier einen Nutzen entdecken?

bye
 Kurt

und im Prinzip tritt das Verständnisproblem ja nur auf durch die Verwendung von my (was zu empfehlen ist), welches eine Variabel nicht an ein package bindet, sondern an einen Scope und aus irgendeinem Grund, will es Connie nicht wahr haben oder nicht verstehen, ich weiß es nicht.

Für mich hat diese frage bisher noch nie eine Rolle gespielt, schwieriger fand ich den umgekehrten Weg, aus einem package heraus Variabeln oder Funktionen bekannt zu machen

In meinen Auge ist daher das Ursprungsbeispiel hypothetisch. Ein package sollte, um Modular zu programmieren, in separaten Dateien verwendet werden und dort sollten natürlich auch keine Variabelndeklarationen im Namensraum von main erfolgen, daher tritt dieses Problem nie auf. Das ja nur eine Folge davon ist, dass eine Variabel im Namensraum main, mit my lexikalisch wurde und daher in allen packages in der Datei die Gleiche ist. Sowas macht keiner, der ein Perlprogramm schreibt.

Struppi.

0 80

Frage zu packages

Connie
  • perl
  1. 0
    Patrick Andrieu
    1. 0
      Connie
      1. 0
        Connie
        1. 0
          Patrick Andrieu
          1. 0
            Struppi
            1. 0
              Patrick Andrieu
              1. 0
                Struppi
                1. 0
                  Patrick Andrieu
            2. 0
              Connie
              1. 0
                Connie
    2. 0
      Connie
    3. 6

      Konzept der Namensräume; Global, Dynamic und Lexical Scope

      Siechfred
      1. 0
        Connie
      2. 0
        Connie
        1. 0
          Patrick Andrieu
          1. 0
            Connie
            1. 0
              Patrick Andrieu
              1. 0
                Connie
                1. 0
                  Connie
                  1. 0
                    Struppi
                    1. 0
                      Connie
                      1. 0
                        Struppi
                        1. 0
                          Connie
                          1. 0
                            Struppi
                            1. 0
                              Connie
                              1. 0
                                Struppi
                                1. 0
                                  Connie
                                  1. 0
                                    Struppi
                                    1. 0
                                      Connie
                                      1. 0
                                        Struppi
                                      2. 0
                                        Struppi
                                      3. 0
                                        Patrick Andrieu
                                        1. 0
                                          Struppi
                                          1. 0
                                            Kurt
                                            1. 0
                                              Struppi
                                              1. 0
                                                Kurt
                                                1. 0
                                                  Struppi
                                                  1. 0
                                                    Kurt
                                                    1. 0
                                                      Kurt
                                                      1. 0
                                                        Thomas
                                                        1. 0
                                                          Siechfred
                                                          1. 0
                                                            Kurt
                                                            1. 0
                                                              Siechfred
                                                              1. 0
                                                                Kurt
                                                        2. 0
                                                          Kurt
                                                          1. 0
                                                            Kurt
        2. 0
          Siechfred
      3. 0
        Patrick Andrieu
        1. 0
          Kurt
      4. 0
        Kurt
        1. 0

          my erzeugt keinen Packagevariablen!

          Kurt
        2. 0
          Siechfred
          1. 0
            Siechfred
            1. 0

              Konzeption...

              Patrick Andrieu
              • menschelei
            2. 0
              Kurt
              1. 0
                Siechfred
                1. 0
                  Kurt
  2. 0
    Kurt
    1. 0
      Kurt
    2. 0
      Struppi
      1. 0
        Kurt
      2. 0
        Interessierter Leser
        1. 0
          Interessierter Leser
          1. 0

            Coping with Scoping

            Kurt
        2. 0
          Kurt
  3. 0

    Zusammenfassende Darstellung, Kritik willkommen!

    Siechfred
    1. 0
      Kurt
      1. 0
        Struppi
        1. 0
          Kurt
          1. 0
            Struppi
            1. 0
              Thomas
              1. 0
                Struppi
            2. 0
              Kurt
              1. 0
                Struppi
                1. 0

                  1 Klasse= 1 Modul ?

                  Kurt
                  1. 0
                    Struppi
      2. 0
        Siechfred
        1. 0
          Thomas
        2. 0
          Kurt