SqueakByExample:9.7: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(SBE 9장요약 페이지 추가)
 
(오타수정)
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
==9장 요약==
==9장 요약==


스몰토크 컬렉션 계층도(the smalltalk collection hierarchy)는 다양한 종류의 컬렉션을 균일하게 조작하기 위한 공통된 단어(common vocabulary)를 제공합니다.  
스몰토크의 컬렉션 계층은, 다양한 종류의 컬렉션을 동일하게 조작하기 위한 공통의 어휘를 가지고 있습니다.
 
* 컬렉션에서 볼 수 있는 가장 큰 차이는, SequenceableCollections 은 주어진 순서에 따라 요소들을 보관하는것에 비해, Dictionary 및 Dictionay 의 서브클래스들은 Key-Value 의 연관 쌍을 보관하며, Sets 와 Bags 는 다루는 요소의 순서에 대한 규칙을 가지지 않는다는 점입니다.
* 컬렉션에 메시지 asArray, asOrderedCollection 를 발송함으로써 대부분의 컬렉션들을 다른 종류의 컬렉션으로 변환할 수 있습니다.
* 컬렉션을 정렬하기 위해서는, 정렬을 원하는 컬렉션에 asSortedCollection 을 발송합니다.
* 리터럴의 Array 는 #(...) 같은 특별한 문법으로 만들 수 있습니다. 동적 Array 는 {...} 문법으로 만들수 있습니다.
* Dictionary는 key 를 비교할때 동치성(equality)을 사용합니다. String 의 인스턴스를 Key 로 사용할때 가장 유용합니다. 그대신 IdentityDictionary 는 객체의 동일성(object identity)으로 key 를 판단합니다. 이것은 key 로 Symbol 을 시용하거나, 객체의 참조를 값에 대입할때 적합합니다.
* String 은 일반적인 컬렉션 메시지의 처리가 가능합니다. 게다가, String 은 Pattrern-Matching 의 기본적인 형태도 지원합니다. 좀더 진보된 프로그램에는, 일반적인 matching 대신 RegEx package 사용하면 됩니다.
* 기본적인 반복자 메시지는 do: 입니다. 이 메시지는 컬렉션의 요소를 수정하거나, 각 요소에 같은 메시지를 발송하는 작업에 대한 코드등에 유용하게 사용될 수 있습니다.
* 사실 do: 메서드 대신, 동일한 방식의 처리를 위해 collect:, select:, reject:,includes:, inject:into: 및 그외의 고수준인 메시지를 사용하는 것이 좀 더 일반적입니다.
* 반복을 수행하고 있는 컬렉션의 요소를 절대로 제거하지 마십시오. 만약 컬렉션의 요소를 수정하셔야 한다면, 요소를 다른 객체로 복사한다음 수정해야 합니다.     
* 만약 = 메서드를 재지정해야 한다면 hash 메서드 또한 재지정해야 한다는걸 기억하시기 바랍니다.


* SequenceableCollections 사이의 중요한 차이점은, 주어진 순서에 따라 자체 구성요소들을 유지하는 것이고, Dictionary 그리고 그것의 서브클래스들은 값에 대한 키의 연계(Key-to-value associations)를 유지하며, Sets와 Bags는 순서가 불규칙하다는 것입니
* 여러분은 컬렉션들에 메시지 asArray, asOrderedCollection를 발송함으로써 대부분의 컬렉션들을 다른 종류의 컬렉션으로 변환할 수 있습니다.
* 컬렉션(collection)을 정렬하기 위해, 그 컬렉션에 asSortedCollection을 발송합니다.
* 리터럴 배열(Literal Arrays)은 특별한 구문 #( … )으로 만들어집니다. 동적 배열은 구문{ … }으로 만들어집니다.
* Dictionary는 동동성(equality)으로 키들(Keys)을 비교합니다. 키들(Keys)이 문자열(String)의 인스턴스들 일 때 가장 유용합니다. 대신에 IdentityDictionary는 키들(Keys)을 비교하기 위해 오브젝트 아이덴티티(object identity)를 사용합니다. 이것은 심볼들이 키들로 사용되거나 오브젝트 참조들(object rerferences)을, 값(values)에 맵핑(mapping)할 때, 좀더 적합합니다.
* 문자열(Strings)은 평상시의 컬렉션 메시지(the usual collection messages)를 이해합니다. 게다가, 문자열은 패턴-매칭(pattern-mathing)의 단순한 형태도 지원합니다. 좀더 진보된 어플리케이션에는, 대신 RegEx package를 봅니다. 
* 기본 반복 메시지(the basic iteration message)는 do: 입니다. 이것은 컬렉션의  구성요소를 수정하거나 또는 메시지를 각 구성요소에 발송하는 작업과 같은 절대적으로 필요한 코드에 유용합니다.
* do:를 사용하는 대신에, 균일한 방식(uniform way)으로 컬렉션들을 처리하기 위해 collect:, select:, reject:,includes:, inject:into:와 다른 좀더 고급-레벨 메시지들을(higher-level) 사용하는 것이 좀더 보편적인 방법입니다.
* 여러분이 반복적용(iterating)을 수행하는 컬렉션으로부터 구성요소를 절대로 제거하지 마십시오. 만약 여러분이 그 구성요소를 수정하셔야 한다면, 대신 복사본 에서 반복적용을 수행하십시오.
* 만약 여러분이 =를 재지정(override)해야 한다면 hash또한 재지정해야 함을 기억해야 합니다.





Latest revision as of 03:10, 14 September 2013

9장 요약

스몰토크의 컬렉션 계층은, 다양한 종류의 컬렉션을 동일하게 조작하기 위한 공통의 어휘를 가지고 있습니다.

  • 컬렉션에서 볼 수 있는 가장 큰 차이는, SequenceableCollections 은 주어진 순서에 따라 요소들을 보관하는것에 비해, Dictionary 및 Dictionay 의 서브클래스들은 Key-Value 의 연관 쌍을 보관하며, Sets 와 Bags 는 다루는 요소의 순서에 대한 규칙을 가지지 않는다는 점입니다.
  • 컬렉션에 메시지 asArray, asOrderedCollection 를 발송함으로써 대부분의 컬렉션들을 다른 종류의 컬렉션으로 변환할 수 있습니다.
  • 컬렉션을 정렬하기 위해서는, 정렬을 원하는 컬렉션에 asSortedCollection 을 발송합니다.
  • 리터럴의 Array 는 #(...) 같은 특별한 문법으로 만들 수 있습니다. 동적 Array 는 {...} 문법으로 만들수 있습니다.
  • Dictionary는 key 를 비교할때 동치성(equality)을 사용합니다. String 의 인스턴스를 Key 로 사용할때 가장 유용합니다. 그대신 IdentityDictionary 는 객체의 동일성(object identity)으로 key 를 판단합니다. 이것은 key 로 Symbol 을 시용하거나, 객체의 참조를 값에 대입할때 적합합니다.
  • String 은 일반적인 컬렉션 메시지의 처리가 가능합니다. 게다가, String 은 Pattrern-Matching 의 기본적인 형태도 지원합니다. 좀더 진보된 프로그램에는, 일반적인 matching 대신 RegEx package 를 사용하면 됩니다.
  • 기본적인 반복자 메시지는 do: 입니다. 이 메시지는 컬렉션의 요소를 수정하거나, 각 요소에 같은 메시지를 발송하는 작업에 대한 코드등에 유용하게 사용될 수 있습니다.
  • 사실 do: 메서드 대신, 동일한 방식의 처리를 위해 collect:, select:, reject:,includes:, inject:into: 및 그외의 고수준인 메시지를 사용하는 것이 좀 더 일반적입니다.
  • 반복을 수행하고 있는 컬렉션의 요소를 절대로 제거하지 마십시오. 만약 컬렉션의 요소를 수정하셔야 한다면, 요소를 다른 객체로 복사한다음 수정해야 합니다.
  • 만약 = 메서드를 재지정해야 한다면 hash 메서드 또한 재지정해야 한다는걸 기억하시기 바랍니다.


Notes