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.

¿Fue útil?

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
scroll top