[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

-----BEGIN PGP SIGNED MESSAGE-----

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

David Alan Black <dblack@candle.superlink.net> writes:

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

> -----Original Message-----

12 messages 2000/12/29

[ruby-talk:8133] Re: Method as block to method

From: Clemens Hintze <c.hintze@...>
Date: 2000-12-27 18:40:02 UTC
List: ruby-talk #8133
You wrote:
> I find myself wanting to pass a method as the block to another
> method on a fairly regular basis, and I don't really like how the
> code turns out.  Currently it looks like this:
> 
>   result.addFaultListener(self, &(method(:addFault).to_proc))

Hmmm ... let me see if I understand you correctly. You have an
instance of a certain class referred by variable 'result', yes?

You want to add a reference to a method to be called if a fault
happened, yes? Like Java, right?

You have first to know, that there are *two* kind of code you could
use here. 

1. blocks (the 'often used' Ruby idiom for callbacks) or 
2. methods, as you already mentioned.

You seem to mix them both. First you extract a method object and try
to convert it to an Proc instance which you convert to an block
afterwards to pass it to your 'result' referred instance.

But this is not necessary, IMHO. You can use a method object directly
without wrapping/converting it first. You have only to know, that you
are not able to get a mere reference to a method in Ruby. You can only
get a reference to a method that is already bound to a certain
instance. Like this:

  m = 2.method(:+)
  p m.call(3)      # => 5
  p m.call(4)      # => 6

You see, that the method referred by variable 'm' is already bound to
instance '2'. But this should normally no problem, as in Ruby *every*
method is bound normally. If not explicitely, then implicitely to
current environment (as private method of class Object).

So you could simply write:

  class Foo
    def initialize
      @faultListener = Array.new
    end
    def addFaultListener(method)
      @faultListener << method
    end
    def fire(n)
      @faultListener.each { |listener| listener.call(n) }
    end
  end

  class Bar
    def initialize(n)
      @name = n
    end
    def listener(n)
      print "Listener of #@name called with #{n} as argument\n"
    end
  end

  def anonListener(n)
    print "Anonymous listener called with #{n} as argument\n"
  end

  foo = Foo.new
  bar1 = Bar.new("Bar1")
  foo.addFaultListener(bar1.method(:listener))
  foo.addFaultListener(method(:anonListener))

  foo.fire(12)

(...)

> through all the arguments). Is there a better way to do this? Does

'Better' is a matter of taste here, IMO. For instance I believe that
somebody else will direct you to observer pattern or delegate usage. 
That is the joy of Ruby: use what seems apropiate to you for the 
current task.

(...)

> of a nuby, so I'll also ask, is it bad (Ruby) design to pass a
> method as the block to a method?

Yes, IMO! Pass a block or pass a method instance. But do not try to
convert a method instance to a block, that is not necessary!

> Thanks,
> 
> 
> Nathaniel

HTH,
\cle

In This Thread