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?
Wechsel von []
zu ()
HINWEIS Das beschriebene Verhalten in dieser Frage hat sich in der Release-Version von perl6 geändert. Siehe Antwort von G. Cito unten.
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
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.
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
:
Tags und Links arrays perl list data-structures perl6