WikiDer > Скрипт .NET
Парадигма | императив, мета, сценарии |
---|---|
Разработчик | Microsoft |
Печатная дисциплина | динамичный |
Платформа | .NET Framework |
Лицензия | Свободный |
Интернет сайт | www |
Под влиянием | |
JavaScript |
Скрипт .NET или же S # это метапрограммирование язык, обеспечивающий функциональность сценариев в Microsoft .NET приложения, позволяющие время выполнения выполнение настраиваемого функционала, аналогичного VBA в Microsoft Office Приложения. Синтаксис Script.NET похож на JavaScript. Он разработан как простой и эффективный язык сценариев, позволяющий настраивать приложения .NET. В языке есть настоящий интерпретатор времени выполнения, и он выполняется без создания дополнительных сборок в памяти.
Script.NET - это проект с открытым исходным кодом.
Возможности метапрограммирования
Script.NET имеет специальный оператор цитирования <[ программа ]> который возвращает AST данной программы. Кроме того, доступ к AST текущей программы можно получить с помощью прога объект.
Вот пример:
// Создаем AST для MessageBox.Show ('Hello'); программааст = <[ Окно сообщения.Показать('Привет'); ]>;// Добавляем этот AST в конец текущей программыпрога.AppendAst(аст);
В <[ ... ]> оператор и прога Объекты позволяют Script.NET создавать новые сценарии или изменять существующие сценарии во время выполнения.
Обобщенные объекты
Script.NET включает в себя так называемую «Mutantic Framework», которая вводит особый вид «мета-объектов» для управления объектами любого типа. Он состоит из набора классов, поверх которого находится класс DataMutant. Он реализует несколько принципов мутантного объекта:
Определение
Мутант - это особый объект, который может иметь все свойства (поля, методы и т. Д.) И может быть преобразован в любой тип (или назначен объекту любого типа). Семантика такого преобразования (или присвоения) прагматически условна.
Есть специальный оператор := называется мутантическим или обобщенным назначением. Его цель - присвоить значения полей DataMutant соответствующим полям объекта любого типа.
Пример. Создание и использование MObject:
// Создание объекта мутанта данных mobj = [ Текст -> 'Привет от мутанта' ]; // Устанавливаем дополнительные поля mobj{{Нет а опечатка|.}}Вершина = 0; mobj{{Нет а опечатка|.}}Оставили = 0; // Устанавливаем соответствующие поля объекта Windows Form // (Мутантное присвоение) форма := mobj;
Примеры
Привет, мир
Окно сообщения.Показать('Привет, мир!');
Сортировка пузырьков без функции вывода
а=[17, 0, 5, 3,1, 2, 55];за (я=0; я < а.Длина; я=я+1) за (j=я+1; j < а.Длина; j=j+1) если (а[я] > а[j] ) { темп = а[я]; а[я] = а[j]; а[j] = темп; }s = 'Полученные результаты:';за (я=0; я < а.Длина; я++) s = s + ',' + а[я];Окно сообщения.Показать(s);
RSS Reader
а = новый XmlDocument();а.Нагрузка('http://www.codeplex.com/scriptdotnet/Project/ProjectRss.aspx'); Окно сообщения.Показать('CodePlex Script.NET RSS ::');для каждого (п в а.SelectNodes('/ RSS / канал / элемент / заголовок')) Окно сообщения.Показать(п.Внутренний текст);
Куча
Стек ограничен 20 элементами, используя Дизайн по контракту особенность
функция Толкать(элемент)[// Не более 10 элементов предварительно(мне{{Нет а опечатка|.}}Считать < 10 ); почтовый(); инвариантный();]{ // меня мутировал объект, // в этом случае стек мне.Толкать(элемент);}функция Поп()[// Проверяем пустоту хардик предварительно(мне{{Нет а опечатка|.}}Считать > 0); почтовый(); инвариантный();]{ возвращаться мне.Поп();}куча = новый Куча<|int|>();// Создаем мутанта харда// 1. Установить функции, переопределить стек {{Не опечатка |.}} НажатьmObject=[Толкать->Толкать,PopCheck->Поп];// 2. Захватить объектmObject.Мутировать(куча);за (я=0; я<5; я++) mObject.Толкать(я);Консоль.WriteLine((нить)mObject.PopCheck());
Смотрите также
- L Sharp - Lisp-подобный язык сценариев для .NET
- Бу - Python Like язык для платформы .NET
- IronPython - реализация Python для платформы .NET, аналогичная Jython.
- Nemerle - язык высокого уровня для платформы .NET.