2011-08-08 2 views

답변

9

그것은 이전 버전과의 호환성을 위해 주로의를 반환 1.9에

. 1.9 이전 버전에서는 ?이 해당 문자의 ASCII 값에 해당하는 Fixnum으로 평가되었습니다. String으로도 인덱싱Fixnum을 반환했습니다.

그래서, 더 이상 배열로 취급하지 않습니다 당신은 문자열의 세 번째 문자는 문자 'A'루비 1.9에서

s[2] == ?a 

할 것이 있다면, 예를 들어, 확인하고 싶어서 경우, 문자열이된다 fixnums하지만 문자의 반복자 (실제로 단일 문자 문자열). 결과적으로 위의 코드는 더 이상 작동하지 않습니다. s[2]은 문자열이되고, ?a은 숫자가되며, 둘은 결코 같지 않습니다.

따라서 ?도 단일 코드 문자열로 평가되어 위 코드가 계속 작동합니다.

1

당신이 맞으면 문자의 문자열 값을 얻습니다. 이전에는 문자의 ASCII 값을 가져 오는 데 사용되었습니다.

루비 1.8
2

?a 

이전

'는'문자의 ASCII 버전을 반환합니다. 그냥 (당신이 가정 한 것처럼) 문자열