Passing function into another function

Hi,

I couldn't work out the syntax for the following:

class Reports
  def self.This; end
  def self.That; end
end

def do_something_with_a_report report
   # calls Reports::This or Reports::That, dtermined by what report is
   # something like report.call ?
end

I want to do something like:

do_something_with_a_report Reports::This

But that calls Reports::This and sends that value to the
do_something_with_a_report function.

In other words, I want to do something like passing a function pointer
to a function in C.

harp:~ > cat a.rb
class Reports
   def self.This; p 'This'; end
   def self.That; p 'That'; end
   This = method 'This'
   That = method 'That'
end

def do_something_with_a_report report
   report.call
end

do_something_with_a_report Reports::This
do_something_with_a_report Reports::That

harp:~ > ruby a.rb
"This"
"That"

you could also just

do_something_with_a_report Reports::method('This')
do_something_with_a_report Reports::method('That')

-a

···

On Tue, 12 Sep 2006, Joe Van Dyk wrote:

Hi,

I couldn't work out the syntax for the following:

class Reports
def self.This; end
def self.That; end
end

def do_something_with_a_report report
# calls Reports::This or Reports::That, dtermined by what report is
# something like report.call ?
end

I want to do something like:

do_something_with_a_report Reports::This

But that calls Reports::This and sends that value to the
do_something_with_a_report function.

In other words, I want to do something like passing a function pointer
to a function in C.

--
in order to be effective truth must penetrate like an arrow - and that is
likely to hurt. -- wei wu wei

Ah, Object#method. Thank you both!

Joe

···

On 9/11/06, ara.t.howard@noaa.gov <ara.t.howard@noaa.gov> wrote:

On Tue, 12 Sep 2006, Joe Van Dyk wrote:

> Hi,
>
> I couldn't work out the syntax for the following:
>
> class Reports
> def self.This; end
> def self.That; end
> end
>
> def do_something_with_a_report report
> # calls Reports::This or Reports::That, dtermined by what report is
> # something like report.call ?
> end
>
> I want to do something like:
>
> do_something_with_a_report Reports::This
>
> But that calls Reports::This and sends that value to the
> do_something_with_a_report function.
>
> In other words, I want to do something like passing a function pointer
> to a function in C.
>

harp:~ > cat a.rb
class Reports
   def self.This; p 'This'; end
   def self.That; p 'That'; end
   This = method 'This'
   That = method 'That'
end

def do_something_with_a_report report
   report.call
end

do_something_with_a_report Reports::This
do_something_with_a_report Reports::That

harp:~ > ruby a.rb
"This"
"That"

you could also just

do_something_with_a_report Reports::method('This')
do_something_with_a_report Reports::method('That')