Adding properties to a method?

J

jonT

Hi,

I'd like to be able to do the following:

class Method; attr_accessor :foo; end
def bar; "some_res"; end
method:)bar).foo=1

method:)bar).foo #= 1

Of coures what i'd actually get is:
method:)bar).foo #= nil

because method:)bar) returns a new object each time.

Is it possible to bind properties to a method definition? If so, how?

Thanks,
Jon
 
J

James Britt

jonT said:
Hi,

I'd like to be able to do the following:

class Method; attr_accessor :foo; end
def bar; "some_res"; end
method:)bar).foo=1

method:)bar).foo #= 1

Of coures what i'd actually get is:
method:)bar).foo #= nil

because method:)bar) returns a new object each time.

A String, in your example. Do you want the string to respond to the
message 'foo=' ?

Is it possible to bind properties to a method definition? If so, how?

What do you mean by "bind" and "properties"?


--
James Britt

"Programs must be written for people to read, and only incidentally
for machines to execute."
- H. Abelson and G. Sussman
(in "The Structure and Interpretation of Computer Programs)
 
J

jonT

Of coures what i'd actually get is:
A String, in your example. Do you want the string to respond to the
message 'foo=' ?

method:)bar)
# => <Method: Object#bar>
method:)bar).class
# => Method

method:)bar) actually returns a method object.
What do you mean by "bind" and "properties"?
Sorry. By bind I meant simply to set the value of a properety in the
usual way. By property I mean property: a public field.

Essentially what I'm aiming to do is to have some way of storing data
about a method (which is either private to Object or a member of some
class or module) such that it is publicly available. Example:

def cd(dir)
FileUtils.cd(dir.path)
nil
end
method:)cd).args_classes={0=>JDir}

not terribly Ruby like but you get the picture.

Jon
 
E

Eric Hodel

class Method; attr_accessor :foo; end
def bar; "some_res"; end
method:)bar).foo=1

method:)bar).foo #= 1

Of coures what i'd actually get is:
method:)bar).foo #= nil

because method:)bar) returns a new object each time.

Of course! It may not be the same method. Another thread may
overwrite bar with a new implementation.
 

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,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top