Quel est le moyen (le plus rapide/plus propre/simple) pour convertir toutes les clés dans une table de hachage dans des chaînes de symboles en Ruby ?
Ce serait très pratique lors de l’analyse de YAML.
Je voudrais pouvoir utiliser :
Plutôt que :
Quel est le moyen (le plus rapide/plus propre/simple) pour convertir toutes les clés dans une table de hachage dans des chaînes de symboles en Ruby ?
Ce serait très pratique lors de l’analyse de YAML.
Je voudrais pouvoir utiliser :
Plutôt que :
Voici une meilleure méthode, si vous utilisez des Rails :
params. symbolize_keys
La fin.
Si vous ne l’êtes pas, juste arnaquer leur code (c’est également dans le lien) :
Pour le cas spécifique de YAML en Ruby, si les clés commencent par ':
', ils seront automatiquement interné comme des symboles.
besoin d'un yaml' require 'pp' yaml_str = " connexions: - l'hôte: host1.example.com port: 10000 - l'hôte: host2.example.com port: 20000 " yaml_sym = " :connexions: - :hôte: host1.example.com :port: 10000 - :hôte: host2.example.com :port: 20000 " pp yaml_str = YAML.charge(yaml_str) met yaml_str.keys.first.class pp yaml_sym = YAML.charge(yaml_sym) met yaml_sym.keys.first.class
Sortie:
# /opt/ruby 1.8.6-p287/bin/ruby ~/test.rb {"connexions"=> [{"port"=>10000, "l'hôte"=>"host1.example.com"}, {"port"=>20000, "accueil"=>"host2.example.com"}]} Chaîne {:connexions=> [{:port=>10000, :host=>"host1.example.com"}, {:port=>20000, :host=>"host2.example.com"}]} Symbole
si vous êtes à l'aide de Rails, c'est beaucoup plus simple - vous pouvez utiliser un HashWithIndifferentAccess et l'accès aux clés à la fois comme une Chaîne de caractères et de Symboles:
my_hash.with_indifferent_access
voir aussi:
http://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html
Ou vous pouvez utiliser le génial "Facettes de Ruby Gem, qui contient un grand nombre d'extensions de Ruby et de la Bibliothèque Standard classes.
require 'facets'
> {'some' => 'thing', 'foo' => 'bar'}.symbolize_keys
=> {:some=>"thing", :foo=>"bar}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.