[#1263] Draft of the updated Ruby FAQ — Dave Thomas <Dave@...>

33 messages 2000/02/08

[#1376] Re: Scripting versus programming — Andrew Hunt <andy@...>

Conrad writes:

13 messages 2000/02/15

[#1508] Ruby/GTK and the mainloop — Ian Main <imain@...>

17 messages 2000/02/19
[#1544] Re: Ruby/GTK and the mainloop — Yasushi Shoji <yashi@...> 2000/02/23

Hello Ian,

[#1550] Re: Ruby/GTK and the mainloop — Ian Main <imain@...> 2000/02/23

On Wed, Feb 23, 2000 at 02:56:10AM -0500, Yasushi Shoji wrote:

[#1516] Ruby: PLEASE use comp.lang.misc for all Ruby programming/technical questions/discussions!!!! — "Conrad Schneiker" <schneiker@...>

((FYI: This was sent to the Ruby mail list.))

10 messages 2000/02/19

[#1569] Re: Ruby: constructors, new and initialise — Yukihiro Matsumoto <matz@...>

The following message is a courtesy copy of an article

12 messages 2000/02/25

[ruby-talk:01629] Re: Ruby: constructors, new and initialise

From: Dave Thomas <Dave@...>
Date: 2000-02-28 14:44:22 UTC
List: ruby-talk #1629
The following message is a courtesy copy of an article
that has been posted to comp.lang.misc as well.

Yukihiro Matsumoto <matz@netlab.co.jp> writes:

> If allocation at `new' uses its arguments, the argument behavior is
> fixed, size of internal buffer in this case.  If you want to make
> subclass of Array, and initialize it by some arguments, you'll meet
> restriction about arguments to `new'.

But say I was implementing a sortable array, where I wanted to
allocate twice the requested storage: the first half to hold the
values, the second half pointers to these values. (Don't ask me why,
because I have no idea. It's a silly example).

     class MyArray < Array
       def MyArray.new(size)
         super(size*2)
       end

       def initialize(size)
         self.[size/2...size] = (0...size/2).to_a
       end
     end

Now, I know I could do this using delegation, but in this case
subclassing seems natural. 

If I hadn't read this thread, I'd expect that MyArray.new(3) would
call MyArray.initialize(6).

Or maybe I wanted an array of pre-computed primes:

     class PrimeArray < Array
       def initialize
         for i in 0...size
           self.[i] = nextPrime
         end
       end
     end


It seems to me that logically, 'new' allocates the storage for the
object, and 'initialize' initializes that store.

I know I must be missing something obvious here. Help!


Regards


Dave

In This Thread