2011-05-30 69 views
2

将Rails代码从Ruby 1.8.7移动到1.9.2时出现问题。我不明白Ruby的行为。从Ruby 1.8移动代码到1.9

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

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

您正在对字符串数组调用to_s。在1.8中相当于调用连接,在1.9中相当于调用检查。 要在1.8和1.9中获得所需的行为,请调用连接而不是to_s。

2

您遇到的差异与Ruby将数组转换为不同版本的字符串的方式有关。在1.9之前,Ruby将通过串联数组中的字符串来表示数组。在1.9中(大概是从前),Ruby以更类似代码的格式表示数组。这样做更有意义,它鼓励你明确地表达你的意思。