有没有办法测试Dart中是否存在函数或方法而不试图调用它并捕获NoSuchMethodError错误? 我正在寻找像
这样的东西if (exists("func_name")){...}
测试名为func_name
的函数是否存在。
提前谢谢!
答案 0 :(得分:6)
您可以使用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
仅测试当前库中是否存在functionName
的函数。因此,import
语句existsFunction
提供的函数将返回false
。