Ce serait la meilleure façon de trier un hachage et retourner l’objet de hachage (au lieu de tableau) :
Réponses
Trop de publicités?Remarque: Ruby >= 1.9.2 a un ordre de la préservation de hachage: l'ordre les touches sont insérés sera l'ordre où ils sont énumérés. Le ci-dessous s'applique aux versions plus anciennes ou vers l'arrière-compatible code.
Il n'y a pas de concept de triés hachage. Donc, non, ce que vous faites n'est pas droit.
Si vous souhaitez un tri pour l'affichage, retourner une chaîne de caractères:
"{" + h.sort.map{|k,v| "#{k.inspect}=>#{v.inspect}"}.join(", ") + "}"
ou, si vous voulez les touches dans l'ordre:
h.keys.sort
ou, si vous voulez accéder aux éléments dans l'ordre:
h.sort.map do |key,value|
# keys will arrive in order to this block, with their associated value.
end
mais en résumé, il ne fait pas de sens de parler d'un classement de hachage. À partir de la docs, "L'ordre dans lequel vous traversez une table de hachage par clé ou la valeur peut sembler arbitraire, et ne sera pas généralement dans l'ordre d'insertion." Si l'insertion de clés dans un ordre spécifique dans la table de hachage ne va pas aider.
J’ai toujours utilisé des . Vous devez encapsuler le
sortie avec `` pour le rendre un hachage de sortie, dans le cas contraire, il génère un tableau de tableaux.
question similaire ici : comment trier un hachage de Ruby par valeur numérique ?