Gibt es eine Möglichkeit, eine Liste aller bekannten Typen in einem Perl 6-Programm zu erhalten?

8

Gibt es eine Möglichkeit, eine Liste aller bekannten Typen (eingebaut, definiert, geladen, was auch immer) zu erhalten, von denen ein Perl 6-Programm weiß? Ich habe keine bestimmte Aufgabe im Sinn, und das ist ein bisschen anders als herauszufinden, ob ein Typ, den ich bereits kenne, definiert wurde.

    
brian d foy 01.07.2017, 13:22
quelle

1 Antwort

10

Dies sollte den Trick machen:

%Vor%

Erklärung:

Perl 6 stellt Pseudopakete bereit, die eine indirekte Suche nach Symbolen ermöglichen, die deklariert / sichtbar sind in verschiedenen Bereichen. Sie können wie Hashes aufgerufen und iteriert werden.

  • Alle eingebauten Symbole sollten in CORE:: sein.
  • Es ist schwieriger, alle diejenigen zu finden, die in dem aktuellen lexikalischen Bereich oder einem seiner übergeordneten Bereiche deklariert sind (oder in diesen importiert werden) Basierend auf seiner Beschreibung in der Dokumentation hätte ich gedacht, dass LEXICAL:: alle enthalten würde, aber basierend auf einigen Experimenten scheint das nicht der Fall zu sein und es sieht aus wie UNIT:: , OUTERS:: , und MY:: müssen durchsucht werden, um alle zu fangen.

Zu den in diesen Pseudopaketen definierten Symbolen gehören:

  • types (Pakete, Module, Klassen, Rollen, native Typen, Enum-Typen, Unterset-Typen)
  • Funktionen (Subroutinen, Terme und Operatoren)
  • enum-Werte
  • Variablen & amp; Konstanten

Um nur die Typen zu erhalten, gräpste ich diejenigen, bei denen der deklarierte Name des Symbols gleich dem Namen seines Objekttyps ist.

Wenn Sie nur Klassen möchten, können Sie den folgenden Schritt hinzufügen:

%Vor%     
smls 01.07.2017, 13:41
quelle

Tags und Links