Mam listę ciągów, które chcę zamówić na dwa sposoby.Elementy listy sortowania w Elixir Lang
- Alfabetycznie
- Przy długości łańcucha
Mam listę ciągów, które chcę zamówić na dwa sposoby.Elementy listy sortowania w Elixir Lang
Aby posortować listę ciągów alfabetycznie, można po prostu użyć Enum.sort/1
, który zleci elementy według ich kolejności domyślnej (co jest alfabetyczna kolejność ciągów).
iex> Enum.sort(["b", "aaa", "cc"])
["aaa", "b", "cc"]
Aby posortować listę według innej właściwości, takie jak długość łańcucha, można użyć Enum.sort_by/2
, która przyjmuje funkcję odwzorowujący jako drugi argument. Wartości zostaną następnie posortowane według wyniku tej funkcji zastosowanego do każdego elementu.
iex> Enum.sort_by(["b", "aaa", "cc"], &String.length/1)
["b", "cc", "aaa"]
Co masz na myśli mówiąc "bez pętli"? Operacja sortowania musi przejść przez listę. W każdym razie, być może Enum.sort/2 jest tym, czego szukasz? –
@ JoséValim Masz rację. Zmieniłem to pytanie, aby nie wprowadzało w błąd. Moduł Enum ma wszystko, czego potrzebuję. Czy możesz to opublikować jako odpowiedź? –