SqueakByExample:9.7

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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