Dilma писал(а):
... кто уже знает FTCG разобраться в RTCG сможет сразу - исходная концепция осталась неизменнойСказанное автором ранее про кодогенератор RTCG, можно сказать и про RTCG.NET. Основные принципы работы кодогенератора были перенесены из оригинальной версии RTCG и даже названия большинства лексем были сохранены для простоты переноса ранее сделанных наработок. Поэтому частично описание оригинальной версии RTCG подходит для кодогенератора RTCG.NET. RTCG.NET, также как и RTCG реализует объектную модель. Есть некоторые отличия в синтаксисе, например, лексема event заменена лексемой @event. Это связано с тем, что в языке C# это ключевое слово и его невозможно использовать в качестве имени метода или класса. Также изменения коснулись API кодогенератора, но они обратно-совместимы с оригиналом, так как только расширяют количество методов.
В RTCG.NET не реализована лексема gvar, поэтому глобальные переменные надо объявлять в классе sys. Лексема var также не реализована, но ключевое слово var языка C# почти совпадает по функционалу.
Работа с динамическими переменными реализована своеобразно через класс @this. Например:
@this.test = "Text";
sys.blk.println(@this.test);
Нет реализации лексемы method. Вместо неё используются штатные в C# делегаты. Например:
@this.Result = (Func<TArgs, TValue>)((data) =>
{
return TValue.empty;
});
TValue Result(TArgs data)
{
return TValue.empty;
}
// initialize widget
@this.obj = sys.add_widget(this);