pl: Scope

Beitrag lesen

hi,

Schauen wir uns einmal an, wie Julias Beispiel in Perl6 aussehen könnte:

sub f1($x) {
  return -> $y {$x * $y}
}

my &f5 = f1(5);

&f5(7); # 35

Sieht furchtbar aus. In Perl 5 hingegen erklärt sich der Code von selbst:

use strict;
use warnings;

$, = " ";
sub f1{ 
    my $x = shift;
    sub{
        my $y = shift;
        $x * $y;
    }
}

# CODE Referenzen speichern
my $f3 = f1(3);
my $f5 = f1(5);

# CODErefs ausführen
print $f3->(11), $f5->(7);

Scope inbegriffen. sub erzeugt eine Referenz auf den Code und die letzte Anweisung in einer sub ist immmer der return. Der Geltungsbereich lexikalischer Variablen wird mit my festgelegt und der ganze statische Scope heißt hier package main.

Codereferenzen werden über den -> Operator ausgeführt, Argumente in ().

MfG

0 49

Ganz kleines JavaScript-Programm

Julia
  • javascript
  1. 1
    JürgenB
    1. 0
      Julia
      1. 0
        Felix Riesterer
        1. 0
          J o
  2. 0
    J o
    1. 0
      Julia
  3. 5
    Orlok
    • javascript
    • programmiertechnik
  4. 3
    Felix Riesterer
    1. 2
      dedlfix
      1. 0
        pl
    2. 2

      Scope

      Orlok
      • javascript
      • perl
      1. 0
        Felix Riesterer
        1. 0
          pl
          1. 0
            Felix Riesterer
            1. 0
              pl
              1. 0
                Felix Riesterer
      2. 0
        pl
        1. 0
          pl
          • perl
        2. 1
          Tabellenkalk
          • perl
          1. 0
            pl
            1. 1
              Tabellenkalk
        3. 0

          Schönheitswettbewerb

          1unitedpower
          • programmiertechnik
          1. 0
            pl
            1. 0
              1unitedpower
              1. 0
                pl
                1. 0
                  1unitedpower
                  1. 0
                    pl
                    1. 4
                      1unitedpower
                      1. 0
                        Matthias Apsel
                        1. 1
                          1unitedpower
                          1. 0
                            pl
                            1. 0
                              Matthias Apsel
                            2. 0
                              1unitedpower
                              1. 0
                                pl
                                1. 0
                                  pl
                                  1. 0
                                    1unitedpower
                                2. 0
                                  1unitedpower
                                  1. 0
                                    pl
                                    1. 0
                                      1unitedpower
                      2. 0
                        Rolf B
                        1. 0
                          1unitedpower
                          1. 0
                            Rolf B
                            1. 0
                              1unitedpower
                        2. 0
                          pl
      3. 0

        Dynamic Scope

        pl
  5. 0
    pl
    1. 0
      Matthias Apsel
  6. 1
    Es