On 12/24/2009 08:05 AM, Philliam Auriemma wrote: > Hey all, > I'm pretty new to ruby, and I absolutely love it. I have aquestion. I > have programmed in a language called lua before (which had real full- > fledged anonymous functions), and with a lua table, which is Lias > version of a hash and an arrary combined, you could do something like Just out of curiosity: where is the array in your Lua case? In Ruby you would not need an Array for this - or rather, you need either an Array or a Hash. > this: > > newtable = { 1 = function() print("hi from 1") end, > 2 = function() print("hi from 2") end > } > > even though some of you haven't even ever heard of lua before, it's > easy to guess what this does: it creates two keys, 1 and 2, in a > table, newtable, and assigns two functions as their values. After > doing that, you can do this: > > newtable[1]() > > To call the function stored in newtable[1]. All that begs the > question: is something similar available in ruby? Yes. (I'm inclined to say "Of course!" :-)) Please see Bill's explanation. Additional note: since the advent of Ruby 1.9 you can also use another syntax for anonymous functions: f = ->(args) { code } newtable = { 1 => -> { puts "hi from 1" }, 2 => -> { puts "hi from 2" }, } If you only have numeric indexes in sequence you can also use an Array instead of a Hash: newtable = [ -> {}, # index 0 -> { puts "hi from 1" }, -> { puts "hi from 2" }, ] Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/