path1="c:/kabab.txt"
path2="c:/kabab2.txt"
for v in 1..2
puts "#{path}"#{v}"
end
我想创建一个文件,但我无法做到这一点。
答案 0 :(得分:3)
在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