SqueakByExample:8.4: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(SBE 문자열 페이지 추가)
 
(번역수정)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
==문자열 (Strings)==
==String==


문자열 또한 카테고리 Collection-String에서 정의됩니다. 하나의 문자열은(string) 오직 문자들만(characters) 붙잡고 있는(hold) 색인화된 컬렉션(indexed Collection)입니다.
String 또한 Collection-String 카테고리에 정의되어 있습니다. 하나의 String 은 오직 character 들만 가지고 있는 색인화된 Collection 입니다.


[[image:StringHierarchy.png|none|506px|thumb|그림 8.2: 문자열 계층도]]


[[image:StringHierarchy.png|none|506px|thumb|그림 8.2: 문자열 계층도(The String Hierarchy)]]


사실, String 은 추상클래스이며, 스퀵의 String 은 사실상 실제하는(concrete) 클래스 ByteString 의 인스턴스입니다.


사실, 문자열(String)은 추상적(abstract)이고, 스퀵 문자열은 사실상 실체적 클래스(the concrete class) ByteString의 인스턴스입니다.
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
'hello world' class    ⇒    ByteString
'hello world' class    ⇒    ByteString
Line 13: Line 13:




다른 중요한 문자열(String)의 서브클래스는 심볼(Symbol)입니다. 중요한 차이는 주어진 값과 함께 지금까지 심볼(symbol)단일 인스턴스만 존재한다는 것입니다. [이것은 때때로 “고유한 인스턴스 속성(the unique instance property”로 지칭됩니다.) 반대로, 두 개의 분리 구성된 문자열(separately constructed String)은 종종 다른 오브젝트가 될 일련의 동일한 문자들을 포함할 수 있습니다.  
다른 중요한점은 String 의 서브클래스는 Symbol 이라는 것입니다. 중요한 차이점은 Symbol 인스턴스는 하나의 값에 대해 하나만 존재하다는 점이죠.(이는 때때로 "고유 인스턴스 속성" 으로 불리기도 합니다.) 한편 개별로 생성되었지만 우연히 같은 문자열을 가지는 String 은 서로 다른 객체인 경우도 종종 있습니다.
 
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
'hel','lo' == 'hello'    ⇒    false
'hel','lo' == 'hello'    ⇒    false
Line 23: Line 24:




다른 중요한 차이점은 심볼(symbol)이 변할 수 없는 반면에 문자열(String)변할 수 있다는 것입니다.
또다른 중요한 차이점은 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:




문자열들이 컬렉션들(collections)이라는 사실을 잊어버리기가 쉽습니다. 문자열들은 컬렉션들이 이해하는 방식으로 동일한 메시지들을 이해합니다:  
문자열들이 Collection 이라는 사실을 잊어버리기가 쉽습니다. 문자열들은 Collection 들이 이해하는것과 동일하게 메시지를 이해합니다:
 
<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
#hello indexOf: $o    ⇒    5
#hello indexOf: $o    ⇒    5
Line 39: Line 42:




비록 문자열이 메그니튜드(Magnitude)로부터 상속된 것은 아니지만, 보통, 비교 메소드(comparising methods) <, = 등을 지원합니다. 게다가, 문자열 »match은 몇몇 기본 방울 형식 패턴 매칭(basic glob-style pattern-mathing)에 유용합니다.
비록 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 패키지와 같은 여러 개의 제 3사 실행 지원들을 활용할 수 있습니다.
정규 표현식에 사용할만한 보다 나은 지원이 필요하다면, Vassili Bykov 의 Regex 패키지같은 여러 가지 서드파티등을 활용할 수 있습니다.


문자열은 여러 개의 변환 메소드들을 지원합니다. 이 메소들 많은 것들은 asDate, asFileName 등과 같은 다른 클래스들을 위한 바로 가기 컨스트럭터 메소드 (shortcut constructor methods)입니다. capitalized와 traslatetoLowercase와 같은 문자열을 다른 문자열로 변환시키는 여러 개의 유용한 메소드 또한 존재합니다.
문자열은 여러가지 변환 메서드들을 지원합니다. 이 메서드 대부분은 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 입니다.

그림 8.2: 문자열 계층도


사실, 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장을 보십시오.


Notes