[#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: Eugene Scripnik <Eugene.Scripnik@...>
Date: 2003-08-15 10:35:56 UTC
List: ruby-core #1425
Yukihiro Matsumoto wrote:
> 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"
OK, thank you for explanations. Problem solved by changing def new2 to 
def self.new2

-- 
Eugene Scripnik
IT Group
Software Architect
Tel./Fax +380 (372) 58-43-10
email: Eugene.Scripnik@itgrp.net
http://www.itgrp.net/


In This Thread

Prev Next