SqueakByExample:8.4: Difference between revisions
Onionmixer (talk | contribs) mNo edit summary |
Onionmixer (talk | contribs) (번역수정) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== | ==String== | ||
String 또한 Collection-String 카테고리에 정의되어 있습니다. 하나의 String 은 오직 character 들만 가지고 있는 색인화된 Collection 입니다. | |||
[[image:StringHierarchy.png|none|506px|thumb|그림 8.2: 문자열 계층도]] | |||
사실, String 은 추상클래스이며, 스퀵의 String 은 사실상 실제하는(concrete) 클래스 ByteString 의 인스턴스입니다. | |||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
'hello world' class ⇒ ByteString | 'hello world' class ⇒ ByteString | ||
Line 13: | Line 13: | ||
다른 | 다른 중요한점은 String 의 서브클래스는 Symbol 이라는 것입니다. 중요한 차이점은 Symbol 의 인스턴스는 하나의 값에 대해 하나만 존재하다는 점이죠.(이는 때때로 "고유 인스턴스 속성" 으로 불리기도 합니다.) 한편 개별로 생성되었지만 우연히 같은 문자열을 가지는 String 은 서로 다른 객체인 경우도 종종 있습니다. | ||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
'hel','lo' == 'hello' ⇒ false | 'hel','lo' == 'hello' ⇒ false | ||
Line 23: | Line 24: | ||
또다른 중요한 차이점은 Symbol 은 변경이 불가능하지만, String 은 변경이 가능하다는 점입니다. | |||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
'hello' at: 2 put: $u; yourself ⇒ 'hullo' | 'hello' at: 2 put: $u; yourself ⇒ 'hullo' | ||
Line 33: | Line 35: | ||
문자열들이 | 문자열들이 Collection 이라는 사실을 잊어버리기가 쉽습니다. 문자열들은 Collection 들이 이해하는것과 동일하게 메시지를 이해합니다: | ||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
#hello indexOf: $o ⇒ 5 | #hello indexOf: $o ⇒ 5 | ||
Line 39: | Line 42: | ||
비록 | 비록 String 이 Magnitude 에서 상속된 것은 아닙니다만, 일반적으로, 비교 메서드인 <, = 등을 지원합니다. 게다가, String>>match 는 기본적인 glob-style 패턴 비교에 유용합니다. | ||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
'*or*' match: 'zorro' ⇒ true | '*or*' match: 'zorro' ⇒ true | ||
Line 45: | Line 49: | ||
정규 표현식에 사용할만한 보다 나은 지원이 필요하다면, Vassili Bykov 의 Regex 패키지같은 여러 가지 서드파티등을 활용할 수 있습니다. | |||
문자열은 | 문자열은 여러가지 변환 메서드들을 지원합니다. 이 메서드 중 대부분은 asDate, asFileName 등과 같은 다른 클래스들을 위한 shortcut 생성자 메서드 입니다. capitalized 와 traslatetoLowercase 와 같이 문자열을 다른 문자열로 변환시키는 여러가지 유용한 메서드들도 있습니다. | ||
문자열과 컬렉션에 대한 좀 더 많은 정보를 원하시면, 9장을 보십시오. | 문자열과 컬렉션에 대한 좀 더 많은 정보를 원하시면, 9장을 보십시오. | ||
==Notes== | ==Notes== |
Latest revision as of 15:38, 9 August 2013
String
String 또한 Collection-String 카테고리에 정의되어 있습니다. 하나의 String 은 오직 character 들만 가지고 있는 색인화된 Collection 입니다.
사실, String 은 추상클래스이며, 스퀵의 String 은 사실상 실제하는(concrete) 클래스 ByteString 의 인스턴스입니다.
'hello world' class ⇒ ByteString
다른 중요한점은 String 의 서브클래스는 Symbol 이라는 것입니다. 중요한 차이점은 Symbol 의 인스턴스는 하나의 값에 대해 하나만 존재하다는 점이죠.(이는 때때로 "고유 인스턴스 속성" 으로 불리기도 합니다.) 한편 개별로 생성되었지만 우연히 같은 문자열을 가지는 String 은 서로 다른 객체인 경우도 종종 있습니다.
'hel','lo' == 'hello' ⇒ false
('hel','lo') asSymbol == #hello ⇒ true
또다른 중요한 차이점은 Symbol 은 변경이 불가능하지만, String 은 변경이 가능하다는 점입니다.
'hello' at: 2 put: $u; yourself ⇒ 'hullo'
#hello at: 2 put: $u ⇒ error
문자열들이 Collection 이라는 사실을 잊어버리기가 쉽습니다. 문자열들은 Collection 들이 이해하는것과 동일하게 메시지를 이해합니다:
#hello indexOf: $o ⇒ 5
비록 String 이 Magnitude 에서 상속된 것은 아닙니다만, 일반적으로, 비교 메서드인 <, = 등을 지원합니다. 게다가, String>>match 는 기본적인 glob-style 패턴 비교에 유용합니다.
'*or*' match: 'zorro' ⇒ true
정규 표현식에 사용할만한 보다 나은 지원이 필요하다면, Vassili Bykov 의 Regex 패키지같은 여러 가지 서드파티등을 활용할 수 있습니다.
문자열은 여러가지 변환 메서드들을 지원합니다. 이 메서드 중 대부분은 asDate, asFileName 등과 같은 다른 클래스들을 위한 shortcut 생성자 메서드 입니다. capitalized 와 traslatetoLowercase 와 같이 문자열을 다른 문자열로 변환시키는 여러가지 유용한 메서드들도 있습니다.
문자열과 컬렉션에 대한 좀 더 많은 정보를 원하시면, 9장을 보십시오.