Boo에서 디스패치 테이블을 어떻게 만들 수 있습니까?
-
18-09-2019 - |
문제
해시 가능에 함수를 저장할 수 있기를 원합니다. 다음과 같은 맵을 만들 수 있습니다.
hash = {}
hash["one"] = def():
print "one got called"
그러나 나는 그것을 부를 수 없습니다 :
func = hash["one"]
func()
다음 오류 메시지가 발생합니다. 'Object'유형에서 표현식을 호출 할 수 없습니다.. 어느 것도 아니다 Invoke
또는 Call
공장.
어떻게하니 ? 내가 추측 한 바에 따르면, 저장된 기능은 무언가로 캐스트되어야합니다.
해결책
당신은 a에 캐스팅해야합니다 호출 가능한 유형:
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()
제휴하지 않습니다 StackOverflow