Unterschied zwischen () und [] in Perl 6

8

Ich lerne Perl 6 und hatte Schwierigkeiten, den Perl 6 One-Liner unter

zu verstehen

Mein Perl 6 ist rakudo-star: stable 2014.04 (bottled)

Das funktioniert gut. Das Array / die Liste ist sortiert

%Vor%

Aber das Array / die Liste wird nicht sortiert, wenn [].sort funktioniert, warum @s.sort nicht?

%Vor%

Wechsel von [] zu ()

%Vor%
  

HINWEIS Das beschriebene Verhalten in dieser Frage hat sich in der Release-Version von perl6 geändert. Siehe Antwort von G. Cito unten.

    
Ask and Learn 11.06.2014, 10:22
quelle

2 Antworten

10

Für diejenigen, die von dieser Antwort verwirrt sind, handelt es sich um Perl 6 , und nichts davon gilt für Perl 5.

Die Aussage

%Vor%

erstellt ein Elementarray und weist es @s[0] zu, so dass @s nur ein einzelnes Element hat und das Sortieren sinnlos ist.

Wie auch immer Sie können sagen

%Vor%

hat die von Ihnen erwartete Wirkung

    
Borodin 11.06.2014, 11:34
quelle
3

Ich werde mich auf ein Bein stellen und auf einige der CP6-Perl6-Dokumentation verweisen, wo dies als ein Liste gegen Array-Sache - dh a Sequenz von Werten im Vergleich zu einer Folge von Einzelwerten (siehe doc.perl6.org ).

Sicher ist Perl6 anders genug, dass es sein eigenes Tag garantiert, aber es ist immer noch perl , also ist es nicht verwunderlich, dass () eine Liste erstellt und [] ein anonymes Array erstellt.

%Vor%

Da diese Frage zuerst gestellt und beantwortet wurde, hat sich das Verhalten geändert:

%Vor%

Beachten Sie, dass die Ausgabe beim Sortieren ein List ist, aber andernfalls ist @s ein Array :

%Vor%     
G. Cito 20.06.2014 13:30
quelle