2012-12-21 12 views
6

Czy istnieje sposób na sprawdzenie istnienia funkcji lub metody w Dart bez próby wywoływania tego błędu i wychwycenia błędu NoSuchMethodError? szukam czegoś jakJak mogę sprawdzić istnienie funkcji w Dart?

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

aby sprawdzić, czy funkcja o nazwie func_name istnieje. Z góry dziękuję!

Odpowiedz

6

można zrobić z mirrors API:

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 tylko sprawdza, czy funkcja z functionName istnieje w obecnej bibliotece. Tak więc przy funkcjach dostępnych przez import oświadczenie existsFunction zwróci false.

Powiązane problemy