Alex McHale <lists / theorigin.org> writes: > I'm looking to put a method in an array, to be called at a later time. > In C, this is possible using pointers (through some rigamarole and > typedefs, it would look like { funct }). Is there any way this can > similarly be acheived in Ruby? > What the end goal is to be able to call the method using 'arr[index] > args'. The purpose of this is that I'm working on a server that might > receive one of hundreds of commands from the client side, and this: ... > Is this possible? Is there a better solution for command recognition > without endless if/elsif/..? You've got lots of options. 1. You can construct a set of classes, each with a method called (say) 'run', and then assign an object of each class to elements of a hash. cmdtab = { 'start' => StartCmd.new, 'end' => EndCmd.new } cmdtab[cmd].run(args...) 2. You can have a set of anonymous procedures which do the work for each command, and then put them in a hash: cmdtab = { 'start' => proc { doStart() }, 'end' => proc { exit(0) } } cmdtab[cmd].call(args...) 3. You can write a method with the same name, and put all the methods in to a class, then use Object#send to invoke the correct method by name: class Command def start(arg1, arg2) .. end def end(arg1, ..) .. end end cmdHandler = Command.new cmdHandler.send(cmd, arg...) 4. You could write each command in a global function and use 'eval' to invoke it (potentially very risky) You might also want to look at 'method_missing' as a way of handling method calls. Regards Dave