タイトルが言うように、dir()
ダーツにPythonに相当するものはありますか?
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、反映MethodMirror、_LocalVariableMirrorImpl 、LibraryMirror、_LocalIsolateMirrorImpl、FunctionTypeMirror、_LocalLibraryMirrorImpl、Mirror、_LocalObjectMirrorImpl、_LocalMirrorImpl、_makeSignatureString、_LocalTypeVariableMirrorImpl、Comment、MirroredUncaughtExceptionError、_LocalParameterMirrorImpl、_LazyTypeVariableMirror、IsodefMirror、VariableMirror_LocalMethodMirrorImpl、ClosureMirror、VMReference、ParameterMirror、InstanceMirror、_isSimpleValue、SourceLocation]
これは文字通り、特定のライブラリ(モジュール)で何が定義されているかを示します。これで、Pythonの関数にいくつかの違いが生じる可能性があります。これも名前を並べ替えているように見えますが、これにより、有利なスタートを切ることができます。