[Newbies] Best way to implement two-dimensional array

John Almberg jalmberg at identry.com
Tue Sep 4 00:38:37 UTC 2007


The only way I can figure out how to create a nested directory  
literal is to do this:

t := { #fs -> ({ #C -> 0. #B -> 1. #R -> 2 } as: Dictionary)  } as:  
(t at: #fs) at: #B.  "Gives '1' when evaluated"

The parens are necessary, as far as I can figure.

Is there any simpler syntax than this? This is acceptable. Just  
wondering if there is a better way.

Or, I'm thinking it might be simpler to leave the literal as an  
array, and do the castings as necessary during access, like this:

"Create as simple array"
	t := { #fs -> { #C -> 0. #B -> 1. #R -> 0 } }.
"Access as dictionary"
	(((t as: Dictionary) at: #fs) as: Dictionary) at: #B.

The reason being, the actual table will be pretty big, and all those  
parens and :as Dictionary statements will clutter up the data.

By the way, I would never have figured this out without the Workspace  
to play in. Obviously I'm not the first to discover this, but Wow!  
Workspace is a great tool!

I have used Ruby's IRB to experiment with Ruby expressions, and  
interactive Perl and PHP a bit, but even IRB is no where near as  
useful as the Workspace. It's so simple... I wonder why other  
languages haven't adopted something like it?

-- John

On Sep 3, 2007, at 3:26 AM, Bert Freudenberg wrote:

> See
> 	http://www.mucow.com/squeak-qref.html#BraceArray
> Another common way is to use a literal array #(...) and convert  
> that into a Dictionary with a few statements. That way you use only  
> a single literal.
> - Bert -
> On Sep 2, 2007, at 19:54 , John Almberg wrote:
>> Ah... Now that's handy. Though it's not clear, at first glance,  
>> how it works...
>> Those curly braces aren't standard Smalltalk, are they? I need to  
>> Google them.
>> Anyway, thanks for the tip. That will make life much easier... I  
>> was starting to think my table initialization was going to have a  
>> lot of add: statements...
>> -- John
>> On Sep 2, 2007, at 3:05 PM, Bert Freudenberg wrote:
>>> No, but this comes close:
>>> {'key1'->'value1'. 'key2'->'value2'} as: Dictionary.
>>> - Bert -
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners

Websites for On-line Collectible Dealers
Identry, LLC
John Almberg
(631) 546-5079
jalmberg at identry.com

More information about the Beginners mailing list