Question

I'd like to be able to store a function in a hashtable. I can create a map like:

hash = {}
hash["one"] = def():
   print "one got called"

But I'm not able to call it:

func = hash["one"]
func()

This produces the following error message: It is not possible to invoke an expression on type 'object'. Neither Invoke or Call works.

How can I do it ? From what I'm guessing, the stored function should be cast to something.

Was it helpful?

Solution

You need to cast to a Callable type:

hash = {}
hash["one"] = def ():
   print "one got called"

func = hash["one"] as callable
func()

OTHER TIPS

You could also use a generic Dictionary to prevent the need to cast to a callable:

import System.Collections.Generic

hash = Dictionary[of string, callable]()
hash["one"] = def():
    print "got one"

fn = hash["one"]
fn()
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top