9
votes

Tourner un hachage dans une chaîne de paires de noms de noms

Si je tourne un hachage de rubis dans une chaîne de paires de noms de noms (à utiliser dans les params http, par exemple), est-ce le meilleur moyen? XXX

Je suppose Ma question est la suivante:

est-il un moyen plus facile d'accéder à http_params ? Certes, la voie ci-dessus fonctionne et est assez simple, mais je suis curieux s'il y a un moyen de recevoir du hachage à la chaîne sans créer d'abord de créer un tableau (le résultat de la méthode méthode)? < / p>


1 commentaires

Le tien est de la même manière que la mienne. N'oubliez pas de faire un codage correct sur les valeurs.


4 Réponses :


5
votes

C'est probablement le meilleur que vous puissiez faire. Vous pouvez parcourir les paires dans le hachage, construire la chaîne comme vous allez. Mais dans ce cas, la chaîne intermédiaire devrait être créée et supprimée à chaque étape.

Avez-vous un cas d'utilisation où il s'agit d'un goulot d'étranglement de performance? En général, Ruby fait tellement de travail dans les coulisses qui se préoccupent d'un tableau temporaire comme celui-ci ne vaut probablement pas la peine. Si vous craignez que cela puisse être un problème, envisagez de profiler votre code de vitesse et de mémoire, les résultats ne sont souvent pas ce que vous attendez.


1 commentaires

Non, je ne suis pas inquiet pour être un problème de performance - je suis toujours relativement nouveau à Ruby et était curieux de voir s'il y avait une «facilité». On dirait chaque fois que je commence à écrire une méthode, je trouve une méthode de rubis ou de rails qui fait exactement la même chose (par exemple distance_of_time_in_words ). :)



8
votes

du le guide du programmeur pragmatique em>:

plusieurs paramètres passés à un rendement sont convertis en une matrice si le bloc a juste un argument. p> BlockQuote>

Par exemple: P>

> fields.map{ |a| a.join('=') }.join('&') # => "a=foo&b=bar"


2 commentaires

Je ne vois pas comment c'est plus simple. Si quelque chose, il masque l'intention du code derrière la magie "Multiples paramètres => Array".


Eh bien, c'est certainement une question de goût. i trouve plus simple car il construit la chaîne sans que je doive explicitement traiter des clés et des valeurs. Je conviens que c'est moins lisible, cependant.



10
votes

rails fournit TO_Query méthode sur Classe HASH. Essayez:

champs.Tourery


1 commentaires

Joli! Ceci est exactement ce que je cherchais.



0
votes

Dans les rails, il a également eu une méthode pour convertir Hash en param.

exemple1: Tournez un hachage en paramètres

{param1: "value1", param2: "valeur2"} .TO_Query

résultat:

"param1 = value1 & param2 = value2"

Exemple2: Tournez les params vers hahs

params = "param1 = value1 & param2 = value2"

rack :: utils.parse_netés_query (paramètres)

résultat:

{"param1" => "value1", "param2" => "value2"}


0 commentaires