|
|||||||||||||||||||||||||||
* jonasbn (sslug@sslug) [2000-09-14 15:55]:
> Hellow,
>
> Jeg har nogen problemer med at sortere ved hjælp af spaceship
> operatoren <=> min sorterede liste kommer til at se ud som følger:
>
> 1, 10, 2, 3 ... 9
>
> Er der nogen som har et forslag til hvordan jeg sortererer ovenstående
> til nummerisk orden?
Se her:
@a = ("1", "10", "9");
@b = sort @a; # @b = ("1","10","9")
@b = sort {$a <=> $b} @a; # @b = (1,9,10)
@b = sort {$a cmp $b} @a; # @b = ("1","10","9")
sort i den første form opdager selv at der er tale om en array af
strenge og bruger derfor cmp automagisk. Hvis @a havde været (1,10,9);
ville den have brugt <=>. De to næste eksempler viser at du kan tvinge
den til at virke som du vil.
Bemærk iøvrigt, at man fra perl 5.6 kan skrive
@b = sort {$_[0] cmp $_[1]} @a;
hvis man hellere vil det.
- peter
|
||||||||||||||
|
||||||||||||||