Вверх ↑
Главный модератор
Ответов: 2997
Рейтинг: 395
#1: 2019-01-19 21:59:54 ЛС | профиль | цитата
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);
Область видимости этих переменных ограничена классом элемента. По сути это и есть аналог лексемы var оригинального RTCG. Тогда как и полагается переменная, которая объявлена при помощи ключевого слова var подчиняется правилам C#.

Нет реализации лексемы method. Вместо неё используются штатные в C# делегаты. Например:
@this.Result = (Func<TArgs, TValue>)((data) =>
{
return TValue.empty;
});
Такое объявление метода соответствует созданию следующего кода:
TValue Result(TArgs data)
{
return TValue.empty;
}
В RTCG в классе sys контекст каждого элемента доступен через лексему объекта this. В RTCG.NET это не реализовано, поэтому при вызове методов этого класса приходится передавать ссылку на элемент в качестве аргумента метода:
// initialize widget
@this.obj = sys.add_widget(this);
При работе с блоками необходимо всегда указывать имя класса sys. В оригинальном RTCG допускалось его не указывать.

Естественно, что при написании кода надо соблюдать правила синтаксиса языка C# версии 5.0

Поэтому это лучше всего делать сразу в Visual Studio или хотя бы в Visual Studio Code.

Если хотите подробнее ознакомиться с синтаксисом RTCG.NET, то посмотрите коды некоторых элементов в папке \_base\code
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Редактировалось 13 раз(а), последний 2019-01-20 05:08:42