2010-07-07 9 views

Répondre

3

Dans Ruby vous ne pouvez pas récupérer la valeur d'une variable locale de son nom en utilisant l'approche que vous avez essayé. Il y a instance_variable_get pour les variables d'instance mais il n'y a pas d'équivalent pour les variables locales autant que je sache. Est une chaîne contenant le nom de votre variable, donc si vous estimez qu'en utilisant eval le résultat de l'eval sera la valeur de la variable. Par conséquent, vous pouvez faire quelque chose comme:

filename = eval("path#{v}") 
open(filename, 'w') 

mais vous devez toujours être prudent lors de l'utilisation eval en raison de problèmes de sécurité potentiels.

Au lieu de cela, je mettrais la liste des fichiers dans un tableau

paths = ["c:/kabab.txt", "c:/kabab2.txt"] 

et à faire:

paths.each do |path| 
    f = open(path, 'w') 
    # use file here 
end 

ou si tous les fichiers partagent un préfixe commun et l'extension puis quelque chose comme:

prefix = "c:/kabab" 
extension = ".txt" 
for v in 1..2 
    filename = "#{prefix}#{v}#{extension}" 
    # use filename here 
end 
+0

oh merci mikej vous savez vraiment très bien ruby ​​j'ai aussi posé des questions sur platinfo ["telnet_id"] J'espère que vous vous souvenez de moi – Milan

+0

mikej la dernière u dit va créer un nom de fichier différent comme kabab1.txt et kabab2.txt je veux créer un nom de fichier différent en utilisant la boucle ?? – Milan

+0

@amit Oui, je me souviens de votre autre question. Les exemples que j'ai donnés utilisent une boucle pour créer les différents noms de fichiers. S'il vous plaît pouvez-vous expliquer un peu plus si ces suggestions ne font toujours pas ce que vous voulez. – mikej

Questions connexes