eXept Software AG Logo

Smalltalk/X Webserver

Documentation of class 'MappedCollection':

Home

Documentation
www.exept.de
Everywhere
for:
[back]

Class: MappedCollection


Inheritance:

   Object
   |
   +--Collection
      |
      +--MappedCollection

Package:
stx:libbasic2
Category:
Collections-Sequenceable
Version:
rev: 1.23 date: 2017/01/20 19:03:37
user: stefan
file: MappedCollection.st directory: libbasic2
module: stx stc-classLibrary: libbasic2
Author:
Claus Gittinger

Description:


MappedCollections represent collections of objects that are indirectly indexed by names.
There are really two collections involved: domain and a map.  The map maps
between external names and indices into domain, which contains the
real association.  In order to work properly, the domain and map objects must
be instances of a subclass of SequenceableCollection or Dictionary. 


Class protocol:

instance creation
o  collection: domainCollection map: mapCollection
return a new MappedCollection

o  new
report an error; mappedCollections may not be created using new


Instance protocol:

accessing
o  at: key
retrieve an element

o  at: key put: anObject
store an element

o  contents
return the contents as a bag

adding & removing
o  add: anObject
report an error; mappedCollections cannot add elements (without a key)

copying
o  postCopy

enumerating
o  do: aBlock
evaluate the argument, aBlock for each element

private
o  setCollection: domainCollection map: mapCollection

queries
o  isFixedSize
return true if the receiver cannot grow

o  size
return the number of elements in the receiver

o  species
return the type of collection to be returned by collect, select etc.

o  speciesForAdding
like species, but redefined for collections which cannot grow easily.
Used by functions which create a growing collection
(see collect:with:, for example)


Examples:


    |mapped dict|

    dict := Dictionary new
                at:'uno' put:1;
                at:'due' put:2;
                at:'tre' put:3;
                at:'quattro' put:4;
                yourself.

    mapped := MappedCollection
                    collection:#(one two three four)
                    map:dict.

    mapped at:'tre'.
    mapped select:[:each| each ~= 'two']


ST/X 7.1.0.0; WebServer 1.663 at exept.de:8081; Wed, 19 Sep 2018 03:24:20 GMT