Thread Klassen-Attribute nur für einen Methodenaufruf überschreiben (6 answers)
Opened by Kuerbis at 2016-01-11 09:44

Kuerbis
 2016-01-12 08:50
#183477 #183477
User since
2011-03-20
942 Artikel
BenutzerIn
[default_avatar]
Hier geht es darum, dass die an die Methode choose übergebenen Optionen nur für den einen Aufruf gültig sind, aber nicht die mit new gesetzten Attribute global überschreiben.


Eine Alternative zu meinem obigen Beispiel - hier müsste ich aber die übergebenen Optionen von Hand validieren:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env perl6
use v6;

class Term::Choose {
    has Str $.prompt = 'Your Choice';
    has Int @.mark;
    has     %!opt;

    method choose ( Array $orig_list, %!opt? ) {
        %!opt<prompt> //= $.prompt;
        say "prompt: %!opt<prompt>"   with %!opt<prompt>;
        %!opt<mark>   //= [ @.mark ];
        say "mark  : %!opt<mark>[]\n" with %!opt<mark>;
    }
}

my $n = Term::Choose.new( prompt => 'AAAAA', mark => [ 5, 6 ] );
$n.choose( [ 1 .. 10 ] );
$n.choose( [ 1 .. 10 ], { prompt => 'BBBBB', mark => [ 1 .. 4 ] } );
$n.choose( [ 1 .. 10 ] );

View full thread Klassen-Attribute nur für einen Methodenaufruf überschreiben