¿Cómo puedo crear una mesa de despacho en Boo?
-
18-09-2019 - |
Pregunta
Me gustaría ser capaz de almacenar una función en una tabla hash. Puedo crear un mapa como:
hash = {}
hash["one"] = def():
print "one got called"
Pero no soy capaz de llamarlo:
func = hash["one"]
func()
Esto produce el mensaje de error: No es posible invocar una expresión del tipo de 'objeto' . Ni Invoke
o Call
obras.
¿Cómo puedo hacerlo? De lo que estoy adivinando, la función almacenada sea echado a algo.
Solución
Es necesario para echar a un tipo rescatable :
hash = {}
hash["one"] = def ():
print "one got called"
func = hash["one"] as callable
func()
Otros consejos
También es posible usar un diccionario genérico para evitar la necesidad de echar a un exigible:
import System.Collections.Generic
hash = Dictionary[of string, callable]()
hash["one"] = def():
print "got one"
fn = hash["one"]
fn()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow