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/