How can I create a dispatch table in Boo?
-
18-09-2019 - |
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.
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