[#1378] differences between Module and Class ? — Mathieu Bouchard <matju@...>

25 messages 2003/08/11
[#1387] Re: differences between Module and Class ? — matz@... (Yukihiro Matsumoto) 2003/08/12

Hi,

[#1442] Re: differences between Module and Class ? — Mathieu Bouchard <matju@...> 2003/08/21

[#1406] _id2ref bug? — Ryan Pavlik <rpav@...>

While debugging some caching code, I've come across a segfault related

22 messages 2003/08/14
[#1407] Re: _id2ref bug? — matz@... (Yukihiro Matsumoto) 2003/08/14

Hi,

[#1413] Re: _id2ref bug? (REPRODUCED, short) — Ryan Pavlik <rpav@...> 2003/08/14

On Fri, 15 Aug 2003 01:57:18 +0900

Re: subclassing Structs

From: matz@... (Yukihiro Matsumoto)
Date: 2003-08-14 17:04:23 UTC
List: ruby-core #1409
Hi,

In message "Re: subclassing Structs"
    on 03/08/14, Eugene Scripnik <Eugene.Scripnik@itgrp.net> writes:

|My example didn't show that but I wanted to create struct-class with 
|dynamic attributes and additional constructors.
|
|class SubStruct < Struct
|   def new2
|     new( 'attr1_value', 'attr2_value' )
|   end
|end
|
|new2 - instance method of SubStruct (Struct) and I thought it has to be 
|class method of SubStruct.new( ... ) class.

Unlike other classes, Struct.new returns its subclass, not instance.
This is very exceptional behavior.

new2 is an instance method of SubStruct.

  class SubStruct < Struct
    def new2
       new(:foo, :bar)
    end
  end

  C = MyStruct.new(:foo)
  p C.ancestors         # => [C, MyStruct, Struct, Enumerable, Object, Kernel]
  p C.new.new2          # "new2" here.  but not "new"

							matz.

In This Thread