Python dir()函数用于查找模块定义的名称.
我们可以使用Mirrors并在我们自己(或至少非常相似)上编写一个等效函数:
import 'dart:mirrors';
List<String> dir([String libraryName]) {
var lib, symbols = [];
if (?libraryName) {
lib = currentMirrorSystem().libraries[libraryName];
} else {
lib = currentMirrorSystem().isolate.rootLibrary;
}
lib.members.forEach((name, mirror) => symbols.add(name));
return symbols;
}
Run Code Online (Sandbox Code Playgroud)
现在这是一个例子:
class Hello {}
bar() => print('yay');
main() {
var foo = 5;
print(dir()); // [main, bar, Hello, dir]
}
Run Code Online (Sandbox Code Playgroud)
或者指定一个库:
print(dir('dart:mirrors'));
Run Code Online (Sandbox Code Playgroud)
[MirroredError,TypeMirror的,ObjectMirror,_LazyLibraryMirror,TypeVariableMirror,MirrorException,ClassMirror,MirrorSystem,_LocalMirrorSystemImpl,_LocalVMObjectMirrorImpl,DeclarationMirror,_LazyTypeMirror,_LocalClosureMirrorImpl,mirrorSystemOf,_LazyFunctionTypeMirror,_filterMap,MirroredCompilationError,_Mirrors,_LocalClassMirrorImpl,_LocalInstanceMirrorImpl,_LocalTypedefMirrorImpl,_LocalFunctionTypeMirrorImpl,反射,MethodMirror,_LocalVariableMirrorImpl ,LibraryMirror,_LocalIsolateMirrorImpl,FunctionTypeMirror,_LocalLibraryMirrorImpl,镜像,_LocalObjectMirrorImpl,_LocalMirrorImpl,_makeSignatureString,_LocalTypeVariableMirrorImpl,注释,MirroredUncaughtExceptionError,_LocalParameterMirrorImpl,_LazyTypeVariableMirror,TypedefMirror,VariableMirror,IsolateMirror,currentMirrorSystem,_dartEscape,_LocalMethodMirrorImpl,ClosureMirror,VMReference,ParameterMirror,InstanceMirror,_isSimpleValue,SourceLocation ]
这从字面上说明了在特定库(模块)中定义的内容.现在,Python的功能可能存在一些差异,这似乎也可以对名称进行排序,但这应该会给你一个良好的开端.
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |