将代码从Ruby 1.8移动到1.9

时间:2011-05-30 15:52:05

标签: ruby-on-rails ruby arrays string

我在将Rails代码从Ruby 1.8.7移动到1.9.2时遇到了问题。我不明白Ruby的行为。

我有一个带有一个元素(一个字符串)的数组。

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 个答案:

答案 0 :(得分:2)

您遇到的差异与Ruby将数组转换为跨不同版本的字符串的方式有关。在1.9之前,Ruby只是通过连接数组中的字符串来表示数组。在1.9(并且可能是以后)中,Ruby以更类似代码的格式表示数组。这样做会更有意义,它鼓励你明确说出你的意思。

答案 1 :(得分:2)

你在一个字符串数组上调用to_s。在1.8中相当于调用join,在1.9中它等同于调用inspect。 要在1.8和1.9中获得所需的行为,请调用join而不是to_s。