Oxygene (язык программирования)

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску
Oxygene
Файл:Chrome-128.png
Последняя версия:

3.0.13 (Шаблон:Release date)

Испытал влияние:

Object Pascal

Oxygene ("Кислород") (ранее известный как Chrome' ("Хром")') - язык программирования, разработанный компанией RemObjects Software для стандарта Common Language Infrastructure. Язык Oxygene был создан на основе языка Object Pascal.

Первоначально привязанный к Delphi.NET, после приобретения прав компанией Embarcadero, Oxygene не обладает полной обратной совместимостью. Так, например, в его состав не входят библиотеки классов, совместимые с VCL, что практически исключает перенос на платформу .NET унаследованных приложений, созданных с помощью Delphi или Kylix и использовавших библиотеку классов VCL.

Компания "RemObjects Software" предлагает полную интеграцию с Visual Studio 2003/2005/2008. Отдельного IDE для Oxygene на данный момент не существует.

Особенности

Примеры кода

Hello World

<source lang="pascal"> namespace HelloWorld;

interface

type

 HelloClass = class
 public
   class method Main; 
 end;
 

implementation

class method HelloClass.Main; begin

 System.Console.WriteLine('Hello World!');

end;

end. </source>


Обобщённый контейнер

<source lang="pascal"> namespace GenericContainer;

interface

type

 TestApp = class
 public
   class method Main;
 end;
 
 Person = class
 public
   property FirstName: String;
   property LastName: String;      
 end;        

implementation

uses

 System.Collections.Generic;

class method TestApp.Main; begin

 var myList := new List<Person>; //вывод типов
 myList.Add(new Person(FirstName := 'Иван', LastName := 'Петров'));  
 myList.Add(new Person(FirstName := 'Маша', LastName := 'Петрова'));
 myList.Add(new Person(FirstName := 'Сергей', LastName := 'Петров'));  
 Console.WriteLine(myList[1].FirstName);  //Проверка не требуется
 Console.ReadLine;        

end;

end. </source>


Обобщённый класс

<source lang="pascal"> namespace GenericMethodTest;

interface

type GenericMethodTest = static class public

 class method Main;

private

 class method Swap<T>(var left, right : T);
 class method DoSwap<T>(left, right : T);

end;

implementation

class method GenericMethodTest.DoSwap<T>(left, right : T); begin

 var a := left;
 var b := right;
 Console.WriteLine('Type: {0}', typeof(T));
 Console.WriteLine('-> a = {0}, b = {1}', a , b);
 Swap<T>(var a, var b);
 Console.WriteLine('-> a = {0}, b = {1}', a , b);

end;

class method GenericMethodTest.Main; begin

 var a := 23;// вывод типа
 var b := 15;
 DoSwap<Integer>(a, b); // никаких приведений базового типа к дочернему (downcasting) для Object в этом классе.
 var aa := 'abc';// вывод типа
 var bb := 'def';
 DoSwap<String>(aa, bb); // никаких приведений базового типа к дочернему (downcasting) для Object в этом классе.
 DoSwap(1.1, 1.2); // вывод типа для обобщённых параметров
 Console.ReadLine();

end;

class method GenericMethodTest.Swap<T>(var left, right : T); begin

 var temp := left;
 left:= right;
 right := temp;

end;

end. </source>

Программа должна вывести:

Type: System.Int32
-> a = 23, b = 15
-> a = 15, b = 23
Type: System.String
-> a = abc, b = def
-> a = def, b = abc
Type: System.Double
-> a = 1,1, b = 1,2
-> a = 1,2, b = 1,1

---


Улучшенная обработка операторов выбора

<source lang="pascal"> case aClassID.ToUpper of

  'XYZ': result := TMyXYZClass;
  'ABC': result := TMyOtherClass;

else raise new Exception('Неправильный ID класса'); end; </source>

<source lang="pascal"> case aClass type of

  TMyXYZClass: TMyXYZClass(aClass).DoSomething;
  TMyOtherClass: TMyOtherClass(aClass).DoSomethingElse;

else raise new Exception('Неправильная ссылка на класс'); end; </source>

Смотри также

Дополнительные источники

en:Oxygene (programming language) ko:크롬 (프로그래밍 언어)

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....