Thread Klassen-Attribute nur für einen Methodenaufruf überschreiben
(6 answers)
Opened by Kuerbis at 2016-01-11 09:44
Hallo!
Die Methode choose sollte die mit new gesetzten Attribute für ihren Aufruf überschreiben können, ohne diese global zu verändern. Ist diese Art der Umsetzung OK? 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 32 33 34 35 36 37 38 39 #!/usr/bin/env perl6 use v6; class Term::Choose { has Str $.prompt = 'Your Choice'; has Int @.mark; has %!backup_opt; # ... method choose ( Array $orig_list, %opt? ) { for %opt.keys -> $key { when $key eq 'prompt' { %!backup_opt{$key} = $!prompt; $!prompt = %opt{$key}; } when $key eq 'mark' { %!backup_opt{$key} = [ @!mark ]; @!mark = |%opt{$key}; } } say "prompt: $!prompt"; say "mark : @!mark[]\n"; self!rest_attributes(); } method !rest_attributes { for %!backup_opt.keys -> $key { when $key eq 'prompt' { $!prompt = %!backup_opt{$key} } when $key eq 'mark' { @!mark = |%!backup_opt{$key} } } } } 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 ] ); |