mod.instance_method(symbol) → unbound_method
Returns an UnboundMethod representing the given instance method in mod.
class Interpreter def do_a() print "there, "; end def do_d() print "Hello "; end def do_e() print "!\n"; end def do_v() print "Dave"; end Dispatcher = { ?a => instance_method(:do_a), ?d => instance_method(:do_d), ?e => instance_method(:do_e), ?v => instance_method(:do_v) } def interpret(string) string.each_byte {|b| Dispatcher[b].bind(self).call } end end interpreter = Interpreter.new interpreter.interpret('dave')
produces:
Hello there, Dave!
Source Code
/* * call-seq: * mod.instance_method(symbol) => unbound_method * * Returns an +UnboundMethod+ representing the given * instance method in _mod_. * * class Interpreter * def do_a() print "there, "; end * def do_d() print "Hello "; end * def do_e() print "!\n"; end * def do_v() print "Dave"; end * Dispatcher = { * ?a => instance_method(:do_a), * ?d => instance_method(:do_d), * ?e => instance_method(:do_e), * ?v => instance_method(:do_v) * } * def interpret(string) * string.each_byte {|b| Dispatcher[b].bind(self).call } * end * end * * * interpreter = Interpreter.new * interpreter.interpret('dave') * * <em>produces:</em> * * Hello there, Dave! */ static VALUE rb_mod_method(mod, vid) VALUE mod; VALUE vid; { return mnew(mod, Qundef, rb_to_id(vid), rb_cUnboundMethod); }
<code/>and<pre/>for code samples.