[#4567] Re: What's the biggest Ruby development? — Aleksi Niemel<aleksi.niemela@...>

Dave said:

18 messages 2000/08/23
[#4568] Q's on Marshal — Robert Feldt <feldt@...> 2000/08/23

[#4580] RubyUnit testcase run for different init params? — Robert Feldt <feldt@...> 2000/08/25

[#4584] Re: RubyUnit testcase run for different init params? — Dave Thomas <Dave@...> 2000/08/25

Robert Feldt <feldt@ce.chalmers.se> writes:

[#4623] Re: RubyUnit testcase run for different init params? — Robert Feldt <feldt@...> 2000/08/28

On Sat, 26 Aug 2000, Dave Thomas wrote:

[#4652] Andy and Dave's European Tour 2000 — Dave Thomas <Dave@...>

24 messages 2000/08/30
[#4653] Re: Andy and Dave's European Tour 2000 — matz@... (Yukihiro Matsumoto) 2000/08/30

Hi,

[#4657] Ruby tutorials for newbie — Kevin Liang <kevin@...> 2000/08/30

Hi,

[ruby-talk:4615] Re: Getting list of regexp matches

From: Brian Fundakowski Feldman <green@...>
Date: 2000-08-28 00:28:45 UTC
List: ruby-talk #4615
On Mon, 28 Aug 2000, Dave Thomas wrote:

> Brian Fundakowski Feldman <green@FreeBSD.org> writes:
> 
> > Hash.new may take an argument that specifies the default value for
> > hash members.  To do it with empty arrays, for example:
> 
> >...
> 
> > Hope it helps!
> 
> 'fraid not.
> 
> Currently the default parameter is evaluated just once, so all entries 
> will default to having the same empty array.
> 
>   h = Hash.new(Array.new)
>   h['cat'] << 'hello'
>   h['dog'] << 'goodbye'
>   puts h['cat'].inspect  #=> ["hello", "goodbye"]

Oh nuts :( That certainly doesn't show up when using integers.  Well,
fortunately, there's an easy solution, which will work with += but not
(ab)using << (which is a tad harder because you can't change self that
much, of course):

e = Array.new
def e.+(a)
	return Array.new + a
end
h = Hash.new(e)
h['cat'] += 'hello'
h['dog'] += 'goodbye'
puts h['cat'].inspect  #=> ["hello", "goodbye"]

> 
> However, there's some talk of a new syntax:
> 
>  h = Hash.new { stuff }
> 
> Where the block will be evaluated to create missing elements.

I like that idea!

> Regards
> 
> 
> Dave

--
 Brian Fundakowski Feldman           \  FreeBSD: The Power to Serve!  /
 green@FreeBSD.org                    `------------------------------'


In This Thread