SqueakByExample:9.7

From 흡혈양파의 번역工房
Revision as of 04:19, 30 August 2012 by Onionmixer (talk | contribs)
Jump to navigation Jump to search

9장 요약

스몰토크 컬렉션 계층도(the smalltalk collection hierarchy)는 다양한 종류의 컬렉션을 균일하게 조작하기 위한 공통된 단어(common vocabulary)를 제공합니다.

  • 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또한 재지정해야 함을 기억해야 합니다.


Notes