2015-06-03 14 views
9

Ho una lista di stringhe che voglio ordinare in due modi.elementi Ordina lista in Elixir Lang

  1. ordine alfabetico
  2. Con la lunghezza della stringa
+4

Cosa intendi senza loop? L'operazione di ordinamento deve attraversare l'elenco. In ogni caso, forse Enum.sort/2 è quello che stai cercando? –

+0

@ JoséValim Hai ragione. Ho modificato la domanda in modo che non sia fuorviante. Il modulo Enum ha tutto ciò di cui ho bisogno. Puoi postarlo come risposta? –

risposta

23

per ordinare un elenco di stringhe in ordine alfabetico, si può semplicemente utilizzare Enum.sort/1, che ordinare gli elementi per il loro ordine di default (che è ordine alfabetico per le stringhe).

iex> Enum.sort(["b", "aaa", "cc"]) 
["aaa", "b", "cc"] 

Per ordinare un elenco da una proprietà diversa, come la lunghezza della stringa, è possibile utilizzare Enum.sort_by/2, che prende una funzione mapper come secondo argomento. I valori verranno quindi ordinati in base al risultato di questa funzione applicata a ciascun elemento.

iex> Enum.sort_by(["b", "aaa", "cc"], &String.length/1) 
["b", "cc", "aaa"]