Как я могу создать таблицу отправки в Boo?

Я хотел бы иметь возможность хранить функцию в хеш-таблице. Я могу создать карту как:

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

Но я не могу это назвать

func = hash["one"]
func()

Это приводит к следующему сообщению об ошибке: Невозможно вызвать выражение для типа "объект". ни Invoke или же Call работает.

Как мне это сделать? Из того, что я предполагаю, хранимая функция должна быть приведена к чему-либо.

2 ответа

Решение

Вы должны привести к типу Callable:

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

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

Вы также можете использовать универсальный словарь, чтобы избежать необходимости приведения к вызываемому:

import System.Collections.Generic

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

fn = hash["one"]
fn()
Другие вопросы по тегам