Ich habe versucht, eine gängige Zeichenfolge Darstellung von Bereichen (z. B. 1-9
) in tatsächliche Bereiche (z. B. 1 .. 9
) zu analysieren, aber oft seltsame Ergebnisse erhalten, wenn zweistellige Zahlen enthalten. 1-10
Ergebnisse im Einzelwert zum Beispiel 1
statt eine Liste von zehn Werten und 11-20
gaben mir vier Werte (11 10 21 20
), die Hälfte davon sind nicht einmal in dem erwarteten Zahlenbereich:Warum sind einige meiner Bereiche wahnsinnig?
put get_range_for('1-9');
put get_range_for('1-10');
put get_range_for('11-20');
sub get_range_for ($string) {
my ($start, $stop) = $string.split('-');
my @values = ($start .. $stop).flat;
return @values;
}
Diese Drucke:
1 2 3 4 5 6 7 8 9
1
11 10 21 20
Statt der erwarteten:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
(Ich habe das vor dem Posten dieser Frage herausgefunden, also habe ich unten geantwortet. Fühlen Sie sich frei, Ihre eigene Antwort hinzuzufügen, wenn Sie es ausarbeiten möchten).
das nicht fast genug Sonderzeichen verwendet - wie wäre es mit '& [..] (| + << $ string.split ('-'))' stattdessen: p – Christoph
Ich finde die Lesbarkeit von 'Range.new' höher als' & [..] '. –
@Christoph Schönes Beispiel. Bitte posten Sie das als eine andere Antwort. Wer Subs braucht, kann einfach '& [..] (| + << $ string.split ('-')) '? :) –