Перемещение кода с Ruby 1.8 на 1.9 - PullRequest
2 голосов
/ 30 мая 2011

У меня проблема с переносом кода Rails с Ruby 1.8.7 на 1.9.2.Я не понимаю поведение Руби.

У меня есть массив с одним элементом (строкой).

my_var = [“Bla blubb and foo bar”]

Затем я звоню:

some text #{my_var}

В Ruby 1.8 я получаю some text Bla blubb and foo bar.

В Ruby 1.9 я получаю some text [\"Bla blubb and foo bar \"]

Почему есть разница?Как я могу избежать этого поведения?

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Вы вызываете to_s для массива строк. В 1.8 это эквивалентно вызову join, в 1.9 это эквивалентно вызову inspect. Чтобы получить желаемое поведение в 1.8 и 1.9, вызовите join вместо to_s.

2 голосов
/ 30 мая 2011

Расхождение, с которым вы сталкиваетесь, связано с тем, как Ruby преобразует массив в строку в разных версиях. До версии 1.9 Ruby представлял массив, просто конкатенируя строки в массиве. В версии 1.9 (и, вероятно, далее) Ruby представляет массив в более похожем на код формате. Делать это более разумно, и это побуждает вас говорить то, что вы имеете в виду в явном виде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...