Oxygene (programovací jazyk)

kyslík
Jazyková třída programovací jazyk a objektově orientovaný programovací jazyk
Objevil se v 2005
Vývojář Software RemObjects
Uvolnění 6.0 ( 28. května 2013 )
Byl ovlivněn Object Pascal , C#
Licence komerční
webová stránka remobjects.com/oxygene

Oxygene ("Oxygen") (dříve známý jako Chrome ("Chrome") ) je programovací jazyk vyvinutý společností RemObjects Software pro standard Common Language Infrastructure . Jazyk Oxygene byl vytvořen z jazyka Object Pascal .

Oxygene, původně spojený s Delphi.NET , po akvizici společností Embarcadero není plně zpětně kompatibilní. Nezahrnuje například knihovny tříd, které jsou kompatibilní s knihovnou VCL , které je vytýkána nedostatečně efektivní implementace, která prakticky eliminovala portování starších aplikací vytvořených pomocí Delphi nebo Kylix a využívajících knihovnu tříd VCL na platformu .NET. .

RemObjects Software nabízí plnou integraci s Visual Studio 2003/2005/2008 a od června 2010 - integraci s MonoDevelop a Visual Studio 2010. V současnosti neexistuje žádné samostatné IDE pro Oxygene.

Funkce

Příklady kódu

ahoj světe

jmenný prostor Ahoj světe ; rozhraní type HelloClass = class metoda veřejné třídy Main ; konec ; implementace metoda třídy HelloClass . hlavní ; beginSystem._ _ _ Konzole . WriteLine ( 'Ahoj světe!' ) ; konec ; konec .


Generic Container

jmenný prostor GenericContainer ; rozhraní type TestApp = class public class metoda Main ; konec ; Osoba = class public property Jmeno : String ; vlastnost Příjmení : String ; konec ; implementace používá System . sbírky . generický ; metoda třídy TestApp . hlavní ; begin var myList := new List < Osoba >; //typ odvození myList . Přidat ( nová Osoba ( Jméno := 'Ivan' , Příjmení := 'Petrov' )) ; myList . Přidat ( nová Osoba ( Jméno := 'Masha' , Příjmení := 'Petrova' )) ; myList . Přidat ( nová osoba ( Jméno := 'Sergey' , Příjmení := 'Petrov' )) ; Konzole . WriteLine ( myList [ 1 ] . Jméno ) ; // Není vyžadováno žádné ověření Console . readline ; konec ; konec .


Obecná třída

jmenný prostor GenericMethodTest ; rozhraní type GenericMethodTest = statická třída metoda veřejné třídy Main ; metoda soukromé třídy Swap < T > ( var vlevo , vpravo : T ) ; metoda třídy DoSwap < T > ( vlevo , vpravo : T ) ; konec ; implementace metoda třídy GenericMethodTest . DoSwap < T > ( vlevo , vpravo : T ) ; begin var a := left ; var b := vpravo ; Konzole . WriteLine ( 'Typ: {0}' , typ ( T )) ; Konzole . WriteLine ( '-> a = {0}, b = {1}' , a , b ) ; Swap < T > ( var a , var b ) ; Konzole . WriteLine ( '-> a = {0}, b = {1}' , a , b ) ; konec ; metoda třídy GenericMethodTest . hlavní ; begin var a := 23 ; // typ inference var b := 15 ; DoSwap < Integer > ( a , b ) ; // žádné downcasting pro Object v této třídě. var aa := 'abc' ; // typ inference var bb := 'def' ; DoSwap < String > ( aa , bb ) ; // žádné downcasting pro Object v této třídě. DoSwap ( 1.1 , 1.2 ) ; // zadejte odvození pro obecné parametry Console . ReadLine () ; konec ; metoda třídy GenericMethodTest . Swap < T > ( var vlevo , vpravo : T ) ; begin var temp := left ; vlevo := vpravo ; vpravo := teplota ; konec ; konec .

Program by měl vypsat:

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


Vylepšené zpracování příkazů select

case aClassID . Horní část 'XYZ' : výsledek := TMyXYZClass ; 'ABC' : vysledek := TMyOtherClass ; else raise new Exception ( 'Neplatné ID třídy' ) ; konec ; případ aClass typ TMyXYZClass : TMyXYZClass ( aClass ) . _ udělat něco ; TMyOtherClass : TMyOtherClass ( aClass ) . DoSomethingElse ; else raise new Exception ( 'Neplatný odkaz na třídu' ) ; konec ;

Viz také

Další zdroje

Poznámky