2015-08-31 15 views
6

Wenn ich durch den Code in Nim-Projekt selbst gehe, finde ich, dass einige Proc von "magischen" Pragma verfasst proc-Definition (example). Es gibt kein Dokument, das das Pragma erklären könnte. Ich nehme an, dass die Definition des Procs irgendwo anders ist und während des Kompilierens zusammengeführt wird. Aber ich kann die Definition nicht finden, indem ich das gesamte Projekt durchsuche.Was bedeutet "magisches" Pragma in Nim?

Verkenne ich das "magische" Pragma falsch? Was bedeutet das? Und wie man es benutzt?

Antwort

4

Das Pragma {.magic.} wird verwendet, um integrierte Operationen und Typen zu definieren, d. H. Alles, was Compilermagie benötigt, um zu funktionieren (daher der Name). Es ist nicht für die Verwendung außerhalb der Systemmodule vorgesehen.

+2

Woher bekomme ich die Definitionen dieser Procs? – Roger

+1

Sie sind alle im Compiler implementiert. Zum Beispiel wird die Prozedur, mit der Sie verbunden sind, möglicherweise im 'opcParseStmtToAst'-Zweig in der' rawExecute() 'Prozedur in' compiler/vm.nim' implementiert. –

+3

In einigen anderen Sprachen/VMs werden diese magischen Operationen auch als "intrinsics" bezeichnet. Weitere Informationen finden Sie unter https://en.wikipedia.org/wiki/Intrinsic_function. –