Je suis désolé si cette question est stupide, mais je dois demander. En PHP, nous pouvons créer un tableau sans le déclarer en premier, bien qu'il ne soit pas considéré comme une bonne pratique. En pratiquant ma nouvelle connaissance de Ruby, j'écrivais un code pour lister les fichiers dans un répertoire et les trier par leurs extensions. Pour ce faire, j'ai démarré une boucle pour les mettre dans différents tableaux en fonction de leurs extensions. Comme ceci:Créer un tableau sans le déclarer en premier - Ruby
files_by_ext = {} #edited - my bad, it was supposed to be {}
files_by_ext['css'] = ['file.css','file2.css','file3.css']
files_by_ext['html'] = ['file.html','file2.html','file3.html']
Ensuite, je voudrais trier en utilisant les touches 'css' et 'html'. Mais dans le processus de création du tableau de fichiers "X", j'ai eu besoin de vérifier si la clé "X" existait. Je ne pouvais pas simplement pousser le fichier (par exemple 'fichier.X').
Il existe un moyen de créer des méthodes pour modifier ce comportement, afin que je puisse créer un tableau en poussant un élément sans le déclarer en premier?
files.each do |f|
extension = /\.(.+)$/.match(f)[1].to_s
files_by_ext[extension] << f
end
Et pas (c'est ce que je fais):
files.each do |f|
extension = /\.(.+)$/.match(f)[1].to_s
if !files_by_ext.key?(extension)
files_by_ext[extension] = [f]
else
files_by_ext[extension] << f
end
end
Je suis désolé, je pense que je l'ai écrit trop. : P Merci d'avoir lu.
Je comprends. La difficulté que j'ai est d'adapter ma méthode de pensée. Différentes ressources, après tout. En tout cas, merci pour votre réponse, beaucoup aidé. Je n'ai pas justifié dans ma question, mais j'ai utilisé des chaînes comme clé parce que je ne pouvais pas penser à un moyen d'obtenir l'extension et de le transformer en symbole. C'est possible? –
Oui, vous pouvez utiliser '' string'.to_sym', mais j'utiliserais juste une chaîne ici. Je pense que cela a plus de sens, car ce sont des extensions de fichiers, qui sont intrinsèquement des chaînes. Les chaînes fonctionnent très bien comme des clés de hachage - en fait, vous pouvez utiliser _any object_ comme une clé de hachage. – wuputah