[#5219] Segmentation fault in timeout.rb — Michel Pastor <K@...>

Hi,

18 messages 2005/06/16
[#5220] Re: Segmentation fault in timeout.rb — Eric Hodel <drbrain@...7.net> 2005/06/16

[#5221] Re: Segmentation fault in timeout.rb — Michel Pastor <K@...> 2005/06/16

On Fri, 17 Jun 2005 05:03:18 +0900

[#5223] Re: Segmentation fault in timeout.rb — nobu.nokada@... 2005/06/17

Hi,

[#5296] Subversion — Shugo Maeda <shugo@...>

Hi,

64 messages 2005/06/30
[#5297] Re: Subversion — Curt Hibbs <curt@...> 2005/06/30

Shugo Maeda wrote:

[#5298] Re: Subversion — Nikolai Weibull <mailing-lists.ruby-core@...> 2005/06/30

Curt Hibbs wrote:

[#5301] Re: Subversion — Austin Ziegler <halostatue@...> 2005/06/30

On 6/30/05, Nikolai Weibull

[#5304] Re: Subversion — Nikolai Weibull <mailing-lists.ruby-core@...> 2005/06/30

Austin Ziegler wrote:

[#5305] Re: Subversion — Austin Ziegler <halostatue@...> 2005/06/30

On 6/30/05, Nikolai Weibull

[#5307] Re: Subversion — mathew <meta@...> 2005/06/30

Austin Ziegler wrote:

[#5308] Re: Subversion — Austin Ziegler <halostatue@...> 2005/06/30

On 6/30/05, mathew <meta@pobox.com> wrote:

[#5311] Re: Subversion — mathew <meta@...> 2005/07/01

Austin Ziegler wrote:

[#5323] Re: Subversion — Austin Ziegler <halostatue@...> 2005/07/01

On 7/1/05, mathew <meta@pobox.com> wrote:

[#5325] Re: Subversion — Nikolai Weibull <mailing-lists.ruby-core@...> 2005/07/01

Austin Ziegler wrote:

Re: Extending a SimpleDelegator

From: TRANS <transfire@...>
Date: 2005-06-15 00:52:21 UTC
List: ruby-core #5203
On 6/12/05, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
> Hi,
> 
> In message "Re: Extending a SimpleDelegator"
>     on Mon, 25 Apr 2005 23:39:35 +0900, TRANS <transfire@gmail.com> writes:
> 
> |I noticed that Delegator (delegate.rb) does not work as one might
> |expect when extending the delegator.
> |  require 'delegate'
> |
> |  M = Module.new {
> |    def bracket ; p "come on" ; end
> |  }
> |
> |  class SD < SimpleDelegator
> |    def initialize( obj )
> |      super( obj )
> |      extend M
> |    end
> |  end
> |
> |  class C
> |    def bracket ;  p "hello" ;  end
> |  end
> |
> |  c = C.new
> |  sd = SD.new(c)
> |  sd.bracket
> |
> |This produces "hello" and not "come on".
> 
> SimpleDelegator creates an object that delegates every method of the
> target object (via singleton methods).  And "extend" adds hidden super
> class between self and its class.  Thus this is expected behavior, IMO.
> 
> I suggest you to use DelegateClass() for the purpose.  This is much
> more efficient.
> 
>   require 'delegate'
> 
>   class C
>     def bracket ;  p "hello" ;  end
>   end
> 
>   M = Module.new {
>     def bracket ; p "come on" ; end
>   }
> 
>   class SD < DelegateClass(C)
>     def initialize(obj)
>       super(obj)
>       extend M
>     end
>   end
> 
>   c = C.new
>   sd = SD.new(c)
>   sd.bracket
> 
>                                                         matz.
> 
> 

Wow! I had all but forgotten about this. Thanks for getting back to
me. I will give this a try.

Thanks,
T.


In This Thread

Prev Next