Scope
bearbeitet von plhi,
> Schauen wir uns einmal an, wie Julias Beispiel in Perl6 aussehen könnte:
>
> ~~~Perl6
> 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:
~~~perl
use strict;
use warnings;
$, = " ";
sub f1{
my $x = shift;
sub{
my $y = shift;
$x * $y;
}
}
my $f3 = f1(3);
my $f5 = f1(5);
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 `main`.
MfG