Здравствуйте, gerrCrazzy, Вы писали:
C>C>using System.Console;
C>macro TestMacro(hisName : string)
C>{ WriteLine(hisName.GetType()); }
C>
C>то во время компиляции получим сообщение "System.String"
Логично, т.к. string параметр макроса — обязательно литерал. Он при передаче в макрос раскрывается в строку.
C>Внимание, ворос, как теперь мне пользовать параметр hisName?
C>Потому как если добавить в код макроса строчку
C> <[ WriteLine("run-time\nparam=" + $hisName ) ]>
Надо так:
<[ WriteLine("run-time\nparam=" + $(hisName : string) ) ]>
Это преобразует строку обратно в литерал, который можно передать конструктору PExpr.(что-то)
Можно так:
<[ WriteLine($("run-time\nparam=" + hisName : string) ) ]>
Это посчитает строку в компиляторе явно, а первый вариант — на оптимизаторе.
... << RSDN@Home 1.2.0 alpha rev. 668>>