"Eric Mahurin" <eric_mahurin / yahoo.com> schrieb im Newsbeitrag 
news:20050501214236.96659.qmail / web41121.mail.yahoo.com...
>> > Anybody know of any collection (i.e. Array/Hash) classes
>> where
>> > the keys and/or values can be assigned a fixed class?  And
>> for
>> > classes that have variable length objects the length be
>> also
>> > potentially fixed across the collection?  The main purpose
>> of
>> > doing this would be memory usage.  You wouldn't have to
>> store
>> > the class (and possibly object length and pointer to
>> allocated
>> > space) per element and instead just have the raw data in
>> the
>> > collection.  You would be able to get the same memory
>> > utilization as C per element if done right.
>> >
>> > Here would be a few examples of what I'm talking about and
>> how
>> > much space per element it would take:
>> >
>> > - array of Floats (64 bits per element)
>> > - array of N-bit integers (N bits per element)
>>
>> For numerics there is for narray:
>> http://raa.ruby-lang.org/project/narray
>>
>> > - hash of 2-character strings (2*8 bits per key and Object
>> per
>> > value)
>> > - array of array of 8 Floats (8*64 bits per line)
>>
>> There's also pack and unpack which can be used to implement
>> this.
>>
>> > For dealing with large data structures, this could be
>> > invaluable for memory usage.
>>
>> "could" or "is"?  Do you really know that you need this or is
>> this just
>> guessing?
>
>
> Thanks Robert and Christian.  I think NArray will work for many
> uses.

You're welcome.

> I still think a more general extension would be nice.  And
> Robert, I guess you might say I'm guessing.  I'm new to ruby,
> but from my perl usage, I know of many times I've dealt with
> large amounts of data and would have wanted more C-like
> efficiency.

;-)

As Mark has demonstrated, you can stuff anything into a String with pack and 
unpack.

Btw, Mark, if you factor out conversion to string and from string (hint 
traits), you have a generic implementation for any fixed size type.  Maybe 
this should go somewhere into the std lib...

Kind regards

    robert