Thread Ersatz für "wantarray" (33 answers)
Opened by Kuerbis at 2016-02-01 11:09

Kuerbis
 2016-02-01 11:09
#183682 #183682
User since
2011-03-20
943 Artikel
BenutzerIn
[default_avatar]
Hallo!

Perl 5 Version (CPAN:Term::Choose):
Code (perl): (dl )
1
2
3
4
5
6
use Term::Choose qw( choose );

my $d = choose( [ 1 .. 20 ] );
# scalar context: ein Element kann ausgewählt werden
my @a = choose( [ 1 .. 20 ] );
# list context: mehrere Elemente können ausgewählt werden


Da es in Perl6 gibt es kein wantarray mehr gibt, habe ich es in der Perl6-Version mit der zusätzlichen Option "return" versucht:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
use v6;
use Term::Choose;

choose( [ 1 .. 20 ], { return => 0 } );
# return == 0 gibt nichts zurück

my $d = choose( [ 1 .. 20 ], { return => 0 } );
# return == 1 ein Element

my @a = choose( [ 1 .. 20 ] );  # default: return => 2
# return == 2 mehrere Elemente


Aber ich habe mir gedacht, eventuell könnte ich es auch so machen:

Code (perl): (dl )
1
2
3
my $nr = 5;
my @d = choose( [ 1 .. 20 ], { max_ret => $nr } ); 
# man kann maximal $nr Elemente auswählen  - default unbegrenzt


Mehrere Elemente kann man mit der Leertaste markieren. Bis jetzt kommt das Element der aktuellen Cursor-Position auch noch zur Auswahl hinzu.

Meine Frage wäre:
Falls ich mich für die max_ret-Variante entscheide: sollte bei $nr > 1 die Anzahl der erlaubten Leertaste-Markierungen $nr - 1 sein, oder sollte die Anzahl der erlaubten Leertaste-Markierungen $nr sein, dafür aber das Element der aktuellen Cursor-Position nicht mehr mit ausgewählt werden?
Last edited: 2016-02-02 08:52:51 +0100 (CET)

View full thread Ersatz für "wantarray"