2011-08-08 96 views

回答

9

這主要是爲了向後兼容。在1.9之前的版本中,?評估爲Fixnum,對應於所討論字符的ASCII值。索引到String返回Fixnum

所以,如果你想檢查,例如,如果一個字符串的第三個字符是字母「A」,你會做

s[2] == ?a 

在Ruby 1.9中,字符串不再被看作一個數組的fixnums而是作爲字符的迭代器(實際上是單字符字符串)。結果,上面的代碼將不再起作用:s[2]將是一個字符串,?a將是一個數字,而這兩個將永遠不會相等。

因此,?也被更改爲一個單字符字符串,以便上面的代碼繼續工作。

1

你是對的,你得到字符的字符串值。它以前用於獲取字符的ASCII值。

紅寶石1.8
2

和早期

?a 

將返回 'A' 字符的ASCII版本。

在1.9它只返回字符串(就像你已經假定)

相關問題