Send an unknown method call: Difference between revisions
Content added Content deleted
(take an argument for fun) |
(added javascript) |
||
Line 6: | Line 6: | ||
* [[Respond to an unknown method call]]. |
* [[Respond to an unknown method call]]. |
||
* [[Runtime evaluation]] |
* [[Runtime evaluation]] |
||
=={{header|JavaScript}}== |
|||
String literal "foo" may be replaced by any expression resulting in a string |
|||
<lang javascript>example = new Object; |
|||
example.foo = function(x) { |
|||
return 42 + x; |
|||
}; |
|||
name = "foo"; |
|||
example[name](5) # => 47</lang> |
|||
=={{header|Python}}== |
=={{header|Python}}== |
Revision as of 05:15, 28 August 2011
Send an unknown method call is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Invoke an object method where the name of the method to be invoked can be generated at run time.
- Cf
JavaScript
String literal "foo" may be replaced by any expression resulting in a string <lang javascript>example = new Object; example.foo = function(x) {
return 42 + x;
};
name = "foo"; example[name](5) # => 47</lang>
Python
String literal "foo" may be replaced by any expression resulting in a string <lang python>class Example(object):
def foo(self, x): return 42 + x
name = "foo" getattr(Example(), name)(5) # => 47</lang>
Ruby
<lang ruby>class Example
def foo 42 end def bar(arg1, arg2, &block) block.call arg1, arg2 end
end
symbol = :foo Example.new.send symbol # => 42 Example.new.send( :bar, 1, 2 ) { |x,y| x+y } # => 3</lang>