Hi,
I have a couple more questions. Hopefully they're not so dumb this time.
1) I need a hash that maintains insertion order. In Java, I'd use
LinkedHashMap. Does Ruby have one?
I've only done Ruby for 9 days now, but from the reading I've done, no. It
would be easy enough to insert the key in an array at the same time you
insert the key=>value in a hash. You could even make a class that does it all
for you.
(I'm a relative newbie too
And just loving Ruby more and more!)
I think I found something in facets that does the trick, but I've not
gotten to looking at it yet so I'm not certain. But anyway, I think a
variant of your suggestion is more suitable.
Perhaps there's a better way, but that's one I'm sure would work.
By the way, why do you need initial insertion order? Do you ever need to look
up by the key value? If not, why not use an array of hashes, or an array of 2
element arrays?
The idea was to make a Hash that accepted Regex keys, but allowed you to
look for them by a string, using backrefs in the value:
class RxHash < Hash
def [](key)
md = nil
if v = self.detect { |k,v| md = /^#{k}$/.match(key) }
v[1].gsub(/\$(\d)/) { md[$1.to_i] }
end
end
end
You can then have mappings like /123([a-z]+)/ => '321$1'. It was for
mapping file extensions. It works, but if there are multiple matches you
get one pretty much at random.
Thinking more on it, though, I see that the Hash is probably leading me
down the wrong path anyway, it's better done with arrays as you suggest.
I think I can have an array of two element arrays and use 'map' for easy
access.
Thanks for the reply,
Ross
···
On Fri, 09 Dec 2005 21:48:24 +0900, Steve Litt wrote:
On Friday 09 December 2005 05:57 am, Ross Bamford wrote:
--
Ross Bamford - rosco@roscopeco.remove.co.uk
"\e[1;31mL"