Ответ 1
Да, вы вызываете to_s
в массив строк. В 1.8, эквивалентном вызову join
, в 1.9 он эквивалентен вызову inspect
.
Чтобы получить нужное поведение в 1.8 и 1.9, вызовите join
вместо to_s
.
Я написал небольшое небольшое приложение, которое берет базовый файл кода с некоторыми ключевыми словами, файл замен для ключевых слов и выводит новый файл с замененными ключевыми словами.
Когда я использовал Ruby 1.8, мои результаты выглядели бы нормально. Теперь, когда вы используете Ruby 1.9, мой замененный код имеет вместо него строки символов строки строки.
Например, я вижу что-то вроде:
["\r\nDim RunningNormal_1 As Boolean", "\r\nDim RunningNormal_2 As Boolean", "\r\nDim RunningNormal_3 As Boolean"]
вместо:
Dim RunningNormal_1 As Boolean
Dim RunningNormal_2 As Boolean
Dim RunningNormal_3 As Boolean
Я использую хеш замещений { "KEYWORD" = > [ "1", "2", "3" ]} и массив замененных строк.
Я использую этот блок для завершения замены:
resultingLibs.each do |x|
libraryString.sub!(/(<REPEAT>(.*?)<\/REPEAT>)/im) do |match|
x.each do |individual|
individual.to_s
end
end
end
#for each resulting group of the repeatable pattern,
#
#Write out the resulting libs to a combined string
Моя догадка заключается в том, что я печатаю массив вместо строк в массиве. Любые предложения по исправлению. Когда я отлаживаю и печатаю свою замененную строку с помощью puts, результат выглядит корректно. Когда я использую метод to_s (каким образом мое приложение записывает вывод в выходной файл), мой вывод выглядит неправильно.
Исправить было бы неплохо, но я действительно хочу знать, что изменилось между Ruby 1.8 и 1.9, что вызывает такое поведение. Метод to_s каким-то образом изменился в Ruby 1.9?
* Я неопытен в Ruby
Да, вы вызываете to_s
в массив строк. В 1.8, эквивалентном вызову join
, в 1.9 он эквивалентен вызову inspect
.
Чтобы получить нужное поведение в 1.8 и 1.9, вызовите join
вместо to_s
.
См. здесь, под Array
Array#to_s is equivalent to Array#inspect
[1,2,3,4].to_s # => "[1, 2, 3, 4]"
instead of
RUBY_VERSION # => "1.8.5"
[1,2,3,4].to_s # => "1234"