飞镖上是否有相当于python的dir()?

Ots*_*lal 6 dart dart-mirrors

正如标题所说,是否有相当于dir()镖的蟒蛇?

Kai*_*ren 9

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的功能可能存在一些差异,这似乎也可以对名称进行排序,但这应该会给你一个良好的开端.