Re[2]: Макросы в Nemerle
От: Алексей П Россия  
Дата: 12.12.06 17:03
Оценка:
Здравствуйте, 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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.