Wie kürze ich ein Array in Perl 6?

8

Wie kann ich ein Array oder eine Array-Referenz in Perl 6 abschneiden?

In Perl 5 kann ich das tun:

%Vor%

In Perl 6 erhalte ich einen Fehler, wenn ich folgendes versuche:

%Vor%

Das funktioniert, aber es sieht weniger schön aus als der Perl 5-Weg und kann teuer sein:

%Vor%     
sid_com 18.01.2016, 15:05
quelle

3 Antworten

13

Es gibt einen einfachen Weg:

%Vor%

Das ist problematisch, wenn das Array ein unendliches ist.

$d.splice(5) hat auch das gleiche Problem.

Ihre beste Wette ist wahrscheinlich $d = [ $d[^5] ] im durchschnittlichen Fall, wo Sie nichts über das Array wissen und ein veränderbares Array benötigen.

Wenn Sie nicht möchten, dass es veränderbar ist $d = $d[^5] , was eine Liste zurückgibt, ist möglicherweise besser.

    
Brad Gilbert 18.01.2016, 15:48
quelle
6

splice ist wahrscheinlich die beste Wahl hier, aber Sie können auch auf fünf Elemente verkürzen, indem Sie% verwenden. co_de% range constructor shortcut (Ich nenne dies den "up to" "operator", aber ich bin mir sicher, dass es einen richtigeren Namen gibt, da es ein Konstruktor eines ^N ):

%Vor%
  

"Das Caret ist ... ein Präfixoperator zum Erstellen numerischer Bereiche   ausgehend von Null ".
  (Aus der Range -Dokumentation )

Man kann argumentieren, dass Perl6 "perl-ish" in dem Sinne ist, dass es normalerweise eine explizite Version einer Operation hat (mit einer Art "vorhersagbarer" Syntax - eine Methode, eine Routine und Range , etc.) das ist verständlich, wenn Sie nicht mit der Sprache vertraut sind, und dann eine Abkürzung-ish-Variante.

Ich bin mir nicht sicher, welcher Ansatz ( :adverb gegenüber der Verknüpfung im Vergleich zu splice , wie Brad Gilbert erwähnt) einen Vorteil in der Geschwindigkeit oder im Speicherverbrauch hätte. Wenn Sie Folgendes ausführen:

%Vor%

Sie können einen kleinen Unterschied sehen. Der Unterschied könnte signifikanter sein, wenn Sie mit einem realen Programm und einer Arbeitslast vergleichen.

    
G. Cito 18.01.2016 15:36
quelle
2

Eine andere Option ist die Verwendung des xx Operators:

%Vor%     
MadcapJake 21.01.2016 17:30
quelle

Tags und Links