2011-05-30 65 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以更類似代碼的格式表示數組。這樣做更有意義,它鼓勵你明確地表達你的意思。

相關問題