7

タイトルが言うように、dir()ダーツにPythonに相当するものはありますか?

4

1 に答える 1

9

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の関数にいくつかの違いが生じる可能性があります。これも名前を並べ替えているように見えますが、これにより、有利なスタートを切ることができます。

于 2013-02-17T17:34:10.907 に答える