Я пытаюсь прочитать аргументы из текстового файла и передать их все сразу в метод Ruby.Аргументы в текстовом файле правильно отформатированы, например:
"path", ["elem1","elem2"], 4,"string"
Я намереваюсь сделать вызов функции следующим образом:
my_method("path", ["elem1","elem2"], 4,"string")
Надеюсь, я пытаюсь добиться этого следующим образом:
IO.readlines("path").each do |line|
puts "#{line}"
my_method(*line.split(","))
end
Проблема в том, что в методе все элементы массива заключены в кавычки.Итак, мой метод в конечном итоге получает это:
""path"", "["elem1","elem2"]", "4",""string""
Теперь это, вероятно, потому, что это массив строк, но зачем заключать его в дополнительный ""
, когда я говорю *arr
?
Если я использую eval:
IO.readlines("path").each do |line|
puts "#{line}"
my_method(*eval(line))
end
Я получаю синтаксическую ошибку, неожиданную ',' после первого аргумента в "path", ["elem1", "elem2"], 4, "string"
Как мне добиться передачи всех элементов в метод сразу, читая аргументы из текстового файла
Также, поскольку Ruby незабота о типах, почему я должен обернуть мои аргументы с ""
в первую очередь.Если я не заключу аргумент в кавычку, я получу undefined variable for main:object
ошибку.