Как говорится в названии, существует ли эквивалент python dir()
на дроте?Есть ли эквивалент piron dir() на дроте?
ответ
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, Кло sureMirror, VMReference, ParameterMirror, InstanceMirror, _isSimpleValue, SourceLocation]
Это буквально говорит, что было определено в конкретной библиотеке (модуль). Теперь могут быть некоторые отличия от функции Python, которая также, похоже, сортирует имена, но это должно дать вам начало.