"foo"[0] = ?b # "boo"
는
내가 위의 예를 찾아 내려고했다 :루비에서 "b"가 'b'를 의미하는 이유는 무엇입니까?
- 어떻게? "B"는 문자 'B'를 의미한다?
왜 필요한가요? - 난 그냥이 쓸 수 없습니다 :
"foo는"[0] = 'B'를 # "우우"
"foo"[0] = ?b # "boo"
는
내가 위의 예를 찾아 내려고했다 :루비에서 "b"가 'b'를 의미하는 이유는 무엇입니까?
왜 필요한가요? - 난 그냥이 쓸 수 없습니다 :
"foo는"[0] = 'B'를 # "우우"
에드 스 팽귄 :? 문자 의 문자 코드를 반환합니다.
루비 1.9에 포함되지 않음. 1.9 기준으로 ?a
은 'a'를 반환합니다. 여기를 참조하십시오 : Son of 10 things to be aware of in Ruby 1.9!
telemachus ~ $ ~/bin/ruby -v
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
telemachus ~ $ ~/bin/ruby -e 'char = ?a; puts char'
a
telemachus ~ $ /usr/bin/ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
telemachus ~ $ /usr/bin/ruby -e 'char = ?a; puts char'
97
편집 : changes in Ruby 1.9의 매우 전체 설명을.
다른 편집 : ?a
을 통해 1.8에서 얻는 문자열의 숫자 변환을 원하면 'a'.ord
을 사용할 수 있습니다.
를? 문자의 문자 코드를 반환합니다. Here is a relevant post on this.
변경 사항은 Ruby 1.9의 UTF-8 업데이트와 관련이 있습니다.
?
의 Ruby 1.8 버전은 1 바이트 문자로만 동작했습니다. 1.9에서는 멀티 바이트 문자로 작업 할 수 있도록 모든 것을 업데이트했습니다. 문제는 어떤 정수가 ?€
에서 반환되어야하는지 명확하지 않다는 것입니다.
그들은 그것을 돌려줌으로써 그것을 해결했습니다. 1.9에서, 다음의 모든 단일 요소 문자열과 동일하다 :
그들은 표기를 삭제해야?€
'€'
"€"
"\u20AC"
?\u20AC
, IMO보다는 (다소 무작위)의 동작을 변경. 그래도 공식적으로 사용 중지 된 것은 아닙니다.
일부 언어 (Pascal, Python)에서는 chars가 존재하지 않습니다. 길이가 1 인 문자열입니다.
다른 언어 (C, Lisp)에서는 문자가 존재하며 'x'또는 # \ x와 같은 고유 한 구문을 사용합니다.
루비는 주로 "chars does not exist"의 측면에 있지만 대부분이 선택을 확신하지 못하는 것 같습니다. 을으로하면 데이터 유형으로 chars가 필요합니다. Ruby는 이미 " '와" "에 의미를 할당하기 때문에? x는 char 리터럴의 다른 옵션보다 적당합니다.
나에게 그것은 단순히 당신이 의미하는 바를 말하는 것입니다. foo [0] = 98이라고 말할 수도 있지만 실제로 문자를 의미 할 때 정수를 사용하고 있습니다. 캐릭터를 의미 할 때 문자열을 사용하는 것은 나에게 똑같이 이상하게 보입니다. 지원하는 작업 세트는 거의 완전히 다릅니다. 하나는 다른 하나의 시퀀스입니다. Math.sqrt가 숫자 목록을 만들지 않게하고 첫 번째 것을 보게됩니다. "정수 목록"을 이미 지원 했으므로 언어에서 "정수"를 생략하지는 않습니다.
(사실, Lisp 1.0은 모든 것을위한 교회 숫자였습니다!)하지만 성능은 최악 이었기 때문에 1962 년 Lisp 1.5가 큰 발전을 거두었습니다.)
나는 왜 'a'대신 'a'라고 말하지 않겠습니까? –
irb 예제를 보내 주셔서 감사합니다. 이 기사에서도이 점을 지적합니다. 그래서 1.9에서,? a는 당신에게 문자 'a'를줍니다. 'a'를 얻는 것은 이상하고 불필요하게 복잡한 구문이 아닙니까? 왜 그냥 'a'가 아닌가? –
좋아요, 글을 쓸 때 쓰는 문자가 하나 더 적습니까? a 아마도 그 이유가 무엇일까요? –