Вопрос

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

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

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

func = hash["one"]
func()

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

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

Это было полезно?

Решение

Вам нужно поднять на Каллируемый тип:

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()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top