كيف يمكنني إنشاء جدول إرسال في بو؟
-
18-09-2019 - |
سؤال
أود أن أكون قادرا على تخزين وظيفة في hashtable. يمكنني إنشاء خريطة مثل:
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()
لا تنتمي إلى StackOverflow