2015-08-31 1 views
6

При прохождении кода в самом проекте Нима, я обнаружил, что часть proc, украшенная «волшебным» прагматическим пропуском определения proc (example). Нет документа для объяснения прагмы, я думаю, что определение proc находится где-то еще и сливается во время компиляции. Но я не могу найти определение, просматривая весь проект.В чем смысл «волшебной» прагмы в nim?

Не понимаю ли я «волшебную» прагму? В чем смысл этого? И как его использовать?

ответ

4

Прагма {.magic.} используется для определения встроенных операций и типов, то есть всего, что требует магии компилятора для работы (отсюда и название). Он не предназначен для использования вне системных модулей.

+2

Где я могу получить определения этих процессов? – Roger

+1

Все они реализованы в компиляторе. Например, процедура, с которой вы связаны, в конечном итоге реализована в ветке 'opcParseStmToAst' в процедуре' rawExecute() 'в' compiler/vm.nim'. –

+3

В некоторых других языках/виртуальных машинах эти операции 'magic' также называются' intrinsics'. См. Https://en.wikipedia.org/wiki/Intrinsic_function для дополнительного контекста. –