SqueakByExample:8.3
Character
Character 는 Magnitude 의 하위 클래스로서 Collections-String 에 정의되어 있습니다. 표시할 수 있는 문자는 $<char> 처럼 스퀵에서는 표현됩니다. 예를 들면 이렇게 말이죠:
$a < $b ⇒ true
인쇄-불가능한 문자는 다양한 클래스 메서드들을 통해서 발생됩니다. Character class>>value: 는 Unicode (또는 ASCII) 정수 값을 인수로서 사용하고 해당하는 문자를 반환합니다. accessing untyPeable character 프로토콜은 backspace, cr, escape, euro, space, tab 등과 같은 여러가지 편리한 생성자 메서드를 포함하고 있습니다.
Character space = (Character value: Character space asciiValue) ⇒ true
printOn: 메서드는 문자를 표현하는 세가지 방법중 어떤것이 가장 적합한지를 판단할 수 있을만큼 똑똑합니다.:
Character value: 1 ⇒ Character value: 1
Character value: 32 ⇒ Character space
Character value: 97 ⇒ $a
isAlphaNumeric, isCharacter, isDigit, isLowercase, isVowel 와 같은 다양하고 편리한 testing 메서드가 내장되어 있습니다.
Character 를, 바로 그 문자를 포함한 문자열로 변환하시려면 asString 을 전송합니다. 이번 경우, asString 과 pringString 은 다른 결과를 보여줍니다:
$a asString ⇒ 'a'
$a ⇒ $a
$a printString ⇒ '$a'
모든 ASCII 문자는 클래스 변수 CharacterTable 에 저장된 고유한 인스턴스입니다:
(Character value: 97) == $a ⇒ true
하지만 0 에서 255 범위 밖의 character 들은 고유하지 않습니다. 아래와같이 말이죠[1]:
Character characterTable size ⇒ 256
(Character value: 500) == (Character value: 500) ⇒ false
Notes
- ↑ 예제중 두번째것을 보면 당연히 같은 500값에 해당하므로 비교시 true 가 출력되어야 하나 false 가 출력되고 있습니다. 그래서 ASCII 를 벗어나는 문자는 동일하지 않을 수 있다고 설명하는 것이죠.