Как следует из названия, есть ли эквивалент dir()
Python на дротике?
Есть ли эквивалент python dir() на дротике?
Ответы (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, которая, кажется, также сортирует имена, но это должно дать вам преимущество.