2010-02-06 3 views

답변

21

루비 1.8에는 문자를 ASCII 코드 값으로 변환하는? - 접두사 구문이 있습니다. 예를 들어 ?a은 문자 a (또는 97)의 ASCII 값입니다. 두 개의 물음표는 실제로는 숫자 63 (또는 ?의 ASCII 값)입니다.

?a # => 97 
?b # => 98 
?c # => 99 
?\n # => 10 
?? # => 63 

다시 변환하려면, 당신은 chr 방법을 사용할 수 있습니다 루비 1.9에서

97.chr # => "a" 
10.chr # => "\n" 
63.chr # => "?" 

??.chr # => "?" 

을의 ?a 구문은 문자 자체를 반환 (문자열에 대괄호 구문처럼) :

??   # => "?" 

"What?"[-1] # => "?" 
+0

'? '문법은 1.9에서 더 이상 사용되지 않는다고 말하는 것이 정확할까요? –

+0

Myrddin, 그건 아마도 공정한 말입니다. 나는 1.9에서'? '문법을 사용할 때 많은 점을 보지 못했다. –

2

Ryan이 말한 것처럼 ? 접두어는 문자의 ASCII 값을 제공합니다. 이 문맥에서 이것이 유용한 이유는 Ruby 1.8에서 문자열에 대한 인덱스 표기법을 사용할 때 문자가 아닌 ASCII 값이 반환된다는 것입니다. 예 : 당신이 알고

irb(main):012:0> str[-1] == ?o 
=> true 

및 (제공 : 문자열의 마지막 문자는 문자 'O'

irb(main):011:0> str[-1] == 'o' 
=> false 

인 경우

irb(main):009:0> str = 'hello' 
=> "hello" 
irb(main):010:0> str[-1] 
=> 111 

그래서 다음은 테스트 할 것입니다하지만이 것 무엇을합니까?) 이것은 약간 더 명확합니다.

irb(main):013:0> str[-1] == 111 
=> true 
+1

위의 내용은 1.9가 아닌 Ruby 1.8에 적용됩니다.''hello "[- 1] =="o "' –

+2

이것은 ruby19에서'? o =="o "', "hello"[- 1] ==? o' ruby18과 ruby19 둘 다에서. – rampion

+0

감사 글렌, 나는 단지 1.8에 적용되는 비트를 명확히하기위한 대답을 업데이트했습니다. – mikej