2012-12-21 15 views
6

क्या इसे कॉल करने की कोशिश किए बिना डार्ट में फ़ंक्शन या विधि के अस्तित्व का परीक्षण करने और NoSuchMethodError त्रुटि को पकड़ने का कोई तरीका है? मैं एक समारोह के नाम पर रखा गया है कि क्या परीक्षण करने के लिएमैं डार्ट में किसी फ़ंक्शन के अस्तित्व का परीक्षण कैसे कर सकता हूं?

if (exists("func_name")){...} 

की तरह कुछ के लिए देख रहा हूँ func_name मौजूद है। अग्रिम धन्यवाद!

उत्तर

6

आप ऐसा कर सकते हैं mirrors API साथ: functionName के साथ एक समारोह वर्तमान पुस्तकालय में मौजूद रहने पर

import 'dart:mirrors'; 

class Test { 
    method1() => "hello"; 
} 

main() { 
    print(existsFunction("main")); // true 
    print(existsFunction("main1")); // false 
    print(existsMethodOnObject(new Test(), "method1")); // true 
    print(existsMethodOnObject(new Test(), "method2")); // false 
} 

bool existsFunction(String functionName) => currentMirrorSystem().isolate 
    .rootLibrary.functions.containsKey(functionName); 

bool existsMethodOnObject(Object o, String method) => reflect(o).type.methods 
    .containsKey(method); 

existsFunction केवल परीक्षण। इस प्रकार import कथन existsFunction द्वारा उपलब्ध कार्यों के साथ false वापस आ जाएगा।