Using a method as input to another method

E

Erick Star

Hi, I was wondering if it was possible to do something like the
following:

class A

def b
stuff
end

def c
stuff
end

def d(x)
self.x
end
end

Then use thing.d(a) with thing an instance of A?
Basically, given a long list of methods belonging to a class, if you
wanted ruby to apply methods based on the state of the program, how
would you set it up besides doing:

case A
when b
thing.stuff
when c
thing.otherstuff
 
R

Robert Klemme

Hi, I was wondering if it was possible to do something like the
following:

class A

def b
stuff
end

def c
stuff
end

def d(x)
self.x
end
end

You can leave out method d and use send() directly, i.e.

a = A.new
a.send:)b)

However:
Then use thing.d(a) with thing an instance of A?
Basically, given a long list of methods belonging to a class, if you
wanted ruby to apply methods based on the state of the program, how
would you set it up besides doing:

case A
when b
thing.stuff
when c
thing.otherstuff

State pattern comes to mind.

http://en.wikipedia.org/wiki/State_pattern

There are a number of options for modeling this besides of state
pattern. Generally any OO approach exploits overriding of methods, i.e.
you have several classes which share a method with identical signature
but different behavior.

Kind regards

robert
 
E

Erick Star

Thank you for your help,
This question is part of a larger something I've been curious about for
a while. I, essentially, want to make a set of rules and basic methods,
then develop a program that can, when given input, determine what
methods to apply and apply them; and, depending on the rules, if it can
generate a new method that would give a more desirable outcome.
Basically, I want to make a program that will have the ability to
reprogram/build on it self.
 
M

Matt Harrison

Erick said:
Thank you for your help,
This question is part of a larger something I've been curious about for
a while. I, essentially, want to make a set of rules and basic methods,
then develop a program that can, when given input, determine what
methods to apply and apply them; and, depending on the rules, if it can
generate a new method that would give a more desirable outcome.
Basically, I want to make a program that will have the ability to
reprogram/build on it self.

It sounds great but I always remember hearing somewhere that
self-modifying code was terrible. I cant remember why, maybe it's the
debugging thats terribly hard.

Anyway, don't let me discourage you, it sounds like fun :)

Matt
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,022
Latest member
MaybelleMa

Latest Threads

Top