Thread Code in Hash dynamisch erweitern (8 answers)
Opened by bianca at 2012-07-22 19:19

murphy
 2012-07-22 20:35
#160134 #160134
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Wirklich verändern lässt sich eine Codereferenz denke ich nicht ohne weiteres, aber man kann natürlich ganz einfach Closures verketten:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use 5.012;
use warnings;

sub catsub {
  my @fs = @_;
  sub { map { $_->(@_) } @fs }
}

my %test = (
    code => sub {
        my $input = shift;
        say '[original]';
        if ($input eq 'h') { return 'hallo'; }
    },
);

$test{code} = catsub(
    $test{code},
    sub {
        my $input = shift;
        say '[erweiterung]';
        if ($input eq 's') { return 'sonne'; }
    },
    sub {
        say '[nix]';
        ();
    },
);

say $test{code}->('h');
say $test{code}->('s');
When C++ is your hammer, every problem looks like your thumb.

View full thread Code in Hash dynamisch erweitern