如何在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