brown-aleks писал(а):
посвятите нас в уже имеющиеся отличия RTCG.NET от RTCGОсновные принципы работы кодогенератора были перенесены из оригинальной версии RTCG и даже названия большинства лексем были сохранены для простоты переноса ранее сделанных наработок. Поэтому частично описание оригинальной версии RTCG подходит для кодогенератора RTCG.NET. Есть некоторые отличия в синтаксисе, например, лексема 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);
Естественно, что при написании кода надо соблюдать правила синтаксиса языка C# версии 5.0
Поэтому это лучше всего делать сразу в Visual Studio или хотя бы в Visual Studio Code.
Если хотите подробнее ознакомиться с синтаксисом RTCG.NET, то посмотрите коды некоторых элементов в папке \_base\code
Редактировалось 13 раз(а), последний 2019-01-20 05:08:42