[stringtemplate-interest] Iterating over a map

Terence Parr parrt at cs.usfca.edu
Tue May 3 16:11:51 PDT 2005


On May 3, 2005, at 2:48 PM, Tom Bentley wrote:

>
>> Hi Tom.  Yeah, that's why i was thinking we'd need that temp object.  
>> I don't like having to assume something is a map, but i already break 
>> this rule by allowing object.property ;)
>
> Yeah, I saw the special case code in there, worrying about Hashtables 
> and the like.
>
> There are quite a few 'safe' (without side-effects) implementations of 
> Map in J2SE to worry about; Hashtable, HashMap, TreeMap, 
> LinkedHashMap, possibly IdentityHashMap (though that's something of a 
> special case). IMHO, supporting the TreeMap and LinkedHashMap is 
> reasonably important, since it gives some sort of control over 
> iteration order.
>
> On the other hand, it seems a shame that people have to shoehorn their 
> model into a HashMap/Hashtable: Fundementally, you can't know for sure 
> that the getters people write (and StringTemplate merrily calls) don't 
> have weird side-effects, so part of me says just to assume the Map 
> interface regardless: If people write a Map whose get() has 
> side-effects that's their look-out.

Yeah, i've fought myself over this for a long time.  I really like to 
prevent the side-effects, but I've already allowed the hole with 
.getProperty() as you say.  Hmm...you may have convinced me.  Though, 
$db.bob$ is way more tempting to use as a database.  It's actually 
worse than getproperty as you can pass a parameter in, which is mucho 
bad.

Ter
--
CS Professor & Grad Director, University of San Francisco
Creator, ANTLR Parser Generator, http://www.antlr.org
Cofounder, http://www.jguru.com



More information about the stringtemplate-interest mailing list