Was sind Smalltalk-Pragmas konzeptionell?

8

Ich habe in Pharo Smalltalk Pragmas benutzt und habe eine Vorstellung davon, wie sie funktionieren und habe Beispiele dafür gesehen, wofür sie in Pharo verwendet werden.

Meine Fragen sind:

  • Was sind Pragmas konzeptionell,
  • zu welchem ​​Konstrukt vergleichen sie in anderen Sprachen,
  • Wann sollte ich ein Pragma einführen?

Ich habe bereits einen interessanten Artikel über ihre Geschichte gefunden: Die Geschichte von VW Pragmas .

    
MartinW 13.11.2013, 17:18
quelle

1 Antwort

12

Sie müssen es als Annotationen betrachten, die an eine CompiledMethod angehängt sind, oder als zusätzliche Eigenschaften.

Dank der Reflektion können einige Werkzeuge andere kompilierte Methoden durchlaufen, solche mit bestimmten Anmerkungen (Eigenschaften) sammeln und eine spezielle Behandlung anwenden, wie etwa ein Menü, eine Liste von Einstellungen oder eine andere Benutzeroberfläche erstellen und alle markierten Klassenmethoden aufrufen als #initializer, oder ein Mechanismus könnte den Stack zurücklaufen lassen, bis eine Methode als #exceptionHandler ...

markiert ist

Es gibt viele Möglichkeiten, Ihre eigene Meta-Eigenschaft zu erfinden ...

BEARBEITEN

Für den zweiten Punkt, ich weiß nicht, muss es eine Sprache sein, die die Methoden aufzählen kann und ihnen Eigenschaften anhängen kann.

Der dritte Punkt ist auch schwer zu beantworten. In der Praxis würde ich sagen, dass Sie einige bereits vorhandene Anmerkungen verwenden würden, aber sehr selten ein neues erstellen, es sei denn, Sie versuchen ein neues Framework für die Ausnahmebehandlung oder ein neues Framework für GUI zu erstellen (Sie möchten einige bekannte Ereignisse registrieren) oder einige Handler ...). Die Hauptverwendung, die ich sehen würde, ist das Erweitern, Erstellen einer Anwendung mit nicht verwandten Teilen, wie ein Hauptmenü. Es scheint eine relativ unaufdringliche Art und Weise zu sein, DECLARATIVE-Hooks einzuführen - verglichen mit der sehr aufdringlichen Art, eine bekannte Methode außer Kraft zu setzen TheWorld & gt; mainMenu. Es ist auch ein bisschen leichter als Registrierung / Unregistrierung IMPERATIV über traditionelle Nachricht senden bei der Initialisierung der Klasse / Unoading. Auf der anderen Seite ist die Magie ein bisschen mehr versteckt.

    
aka.nice 13.11.2013, 17:43
quelle