Есть ли эквивалент python dir() на дротике?

Как следует из названия, есть ли эквивалент dir() Python на дротике?


person Otskimanot Sqilal    schedule 17.02.2013    source источник


Ответы (1)


Функция Python dir() используется для определения имен, определяемых модулем.

Мы можем использовать Зеркала и написать эквивалентную функцию самостоятельно (или, по крайней мере, очень похожую):

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, reflect, MethodMirror, _LocalVariableMirrorImpl , LibraryMirror, _LocalIsolateMirrorImpl, FunctionTypeMirror, _LocalLibraryMirrorImpl, Mirror, _LocalObjectMirrorImpl, _LocalMirrorImpl, _makeSignatureString, _LocalTypeVariableMirrorImpl, Comment, MirroredUncaughtExceptionError, _LocalParameterMirrorImpl, _LazyTypeVariableMirror, TypedefMirror, VariableMirror, IsolateMirror, currentMirrorSystem, _dartEscape, _LocalMethodMirrorImpl, ClosureMirror, VMReference, ParameterMirror, InstanceMirror, _isSimpleValue, SourceLocation ]

Это буквально говорит о том, что было определено в конкретной библиотеке (модуле). Теперь могут быть некоторые отличия от функции Python, которая, кажется, также сортирует имена, но это должно дать вам преимущество.

person Kai Sellgren    schedule 17.02.2013
comment
Зеркала нет в наличии. - person Braulio Soncco; 02.10.2019