В 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