我在将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 \"]
为什么会有区别?我该如何避免这种行为?
答案 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。