如何在ruby中解决这个等式

path1="c:/kabab.txt" path2="c:/kabab2.txt" for v in 1..2 puts "#{path}"#{v}" end 

我想创建一个文件,但我无法做到这一点。

在Ruby中,您无法使用您尝试过的方法从其名称中检索局部变量的 。 实例变量有instance_variable_get ,但据我所知,没有局部变量的等价物。

"path#{v}"是一个包含变量名称的字符串,因此如果使用eval进行评估,则eval的结果将是变量的值。 因此你可以这样做:

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

但是由于潜在的安全问题,在使用eval时总是要小心。

相反,我会将文件列表放在一个数组中

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

并做:

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

或者如果所有文件共享一个共同的前缀和扩展名,那么类似于:

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