2013-02-17 33 views

回答

8

Python dir() function用于找出模块定义的名称。

我们可以用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; 
} 

现在,这里有一个例子:

class Hello {} 

bar() => print('yay'); 

main() { 
    var foo = 5; 

    print(dir()); // [main, bar, Hello, dir] 
} 

或指定库:

print(dir('dart:mirrors')); 

[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,CLO sureMirror,VMReference,ParameterMirror,InstanceMirror,_isSimpleValue,SourceLocation]

这实际上说明了在特定库(模块)中定义的内容。现在,Python的功能可能会有一些差异,这似乎也是对这些名称进行排序的方式,但这应该会让您有所启发。