Cejlon | |
Datum první verze | 2011 |
---|---|
Paradigmata | objektově orientovaný |
Autor | Gavin King |
Vývojáři | Gavin King |
Poslední verze |
1.2.0 (29. října 2015) 1.3.3 (21. srpna 2017) |
Psaní na stroji | Statický , silný |
Ovlivněno | C , Java |
Napsáno | Jáva |
Operační systém | Cross-platform |
Licence | Softwarová licence Apache |
webová stránka | http://ceylon-lang.org |
Přípona souboru | Cejlon |
Ceylon (vyslovuje se [sɨˈlɒn] )) je programovací jazyk open-source na vysoké úrovni se silným typem a statickým typem . Jeho syntaxe je podobná syntaxi Java . Lze jej zkompilovat jako bajtový kód Java nebo jako JavaScript . To bylo propuštěno Red Hat pod licencí Apache v2. To bylo vytvořeno Gavinem Kingem , tvůrcem Hibernate a JBoss Seam .
Tváří v tvář skutečnému nebo domnělému stárnutí jazyka Java a JDK, publikovaného v roce 1995, a jeho slabému vývoji, chtěli tvůrci Ceylonu vytvořit více aktuální jazyk. Vlastnosti, které tvrdí, že chtěly dát tomuto jazyku, jsou:
Ceylon byl poprvé představen během prezentace, kterou přednesl Gavin King na konferenci QCon v Pekingu od 8. dubna 2011 na 10. dubna 2011. V té době pracoval na projektu dva roky, tj. Od roku 2009.
Jazyková verze 1.0.0 byla vydána dne 12. listopadu 2013.
Ceylon byl darován nadaci Eclipse v roce dubna 2017.
Syntaxe je podobná syntaxi Java. Oficiální dokumentace říká, že je inspirován C .
Zde je klasický příklad programu „ Hello world “ na Cejlonu:
void hello() { print("Hello, World!"); }Všechny zdrojové kódy jsou soubory s příponou .ceylon .
Na Cejlonu jsou všechny objekty standardně neměnné . Aby nebyl objekt neměnný, musí být deklarován s anotací proměnné .
Příklad:
Rozdíl mezi místní proměnnou a atributem objektu je rozmazanější než v jiných objektově orientovaných jazycích. Proměnná deklarovaná v těle třídy, která ale není anotována sdílenou, je lokální proměnná, pokud není použita v metodě anotované sdílenou .
Příklady:
Když jeden přiřadí hodnotu proměnné v době její deklarace a že toto přiřazení umožňuje bez dvojznačnosti odvodit typ proměnné, lze ji vynechat. Musíte pouze použít klíčové slovo value . Není však možné to udělat, pokud chcete deklarovat proměnnou jako sdílenou nebo formální .
Příklad:
TřídyCeylon je objektově orientovaný jazyk s třídami . Základní strukturou cejlonského programu je tedy třída. Třída je součástí balíčku a balíček je součástí modulu.
Příklad:
shared class uneClasse(String uneChaine) { String uneAutreChaine; shared Float unReel; }Neexistuje žádný konstruktor. Deklarace třídy obsahuje parametry, které musí být předány při vytváření instance objektu. V příkladu mu musíte předat řetězec jako parametr. Tento řetězec je implicitně součástí atributů třídy. To znamená, že nemůže existovat žádné přetížení konstruktoru a že existuje pouze jeden způsob, jak vytvořit instanci objektu.
Neexistuje žádné klíčové slovo umožňující vytváření instancí, jako nové v Javě nebo C ++. Jednoduše nazýváme název třídy jako funkci.
Příklad:
Zapouzdření dat funguje odlišně od jiných jazyků odvozených z C ++. Sdílené klíčové slovo zpřístupňuje prvek mimo jeho původní kontext. To znamená, že pokud je deklarováno jako sdílené , atribut nebo metoda bude viditelná mimo třídu, pro třídu to znamená, že to bude viditelné pro ostatní třídy balíčku a pro balíček, že to bude viditelné pro ostatní moduly.
Stejně jako v Javě je každá třída definována v souboru se stejným názvem a je umístěna na místě ve stromové struktuře označené balíčkem.
DědictvíAby jedna třída děděla od jiné, používáme klíčové slovo extends jako v Javě .
Příklad:
class Automobile(Float vitesseMax) extends Vehicule { shared default String description => "``modele`` "+super.description; }u třídy vozidel:
class Vehicule(Float vitesseMax, String modele) { shared actual String description => "``vitesseMax``"; }Vidíme, že je možné přistupovat k atributům nadřazené třídy díky použití klíčového slova super . Vidíme, že pro předefinování atributu nadřazené třídy je nutné jej deklarovat standardně . Podobně musí být redefinice deklarována s klíčovým slovem aktuální . Tato sůl syntaxe zabrání chybám předefinování, jako je omylem předefinování nebo pojmenování předefinovaného atributu. Syntaxi pro novou definici lze zkrátit odstraněním sady klíčových slov před názvem atributu, včetně datového typu:
description => "``modele`` "+super.description;Tato syntaxe neumožňuje žádnou anotaci, dokonce ani dokumentaci.
Podobně jako v Javě každá třída, která neurčuje nadřazenou třídu, implicitně dědí z třídy ceylon.language.Basic.
Abstraktní třídy a rozhraníPříklad:
Příklad:
Implementace rozhraní třídou se provádí pomocí klíčového slova satisfies .
Příklad:
Vidíme, že na Cejlonu je možné přidat do rozhraní atributy. Aby se předešlo jakékoli nejednoznačnosti, je možné, aby třída implementovala pouze dvě rozhraní mající atribut se stejným názvem, pokud toto pochází z jiného rozhraní, ze kterého první dvě dědí.
Příklad:
Může proto být nutné záměrně rozložit atributy společné pro několik rozhraní v rozhraní, ze kterého budou všechny dědit.
Příklad:
Vzhledem k tomu, že rozhraní mohou obsahovat atributy a kód, je možné vytvářet třídy implementací několika rozhraní, třída potom zdědí chování, které je již v těchto rozhraních zahrnuto. Tato rozhraní se poté chovají jako mixiny .
Stejné klíčové slovo splňuje se používá k označení, že rozhraní dědí z jiného rozhraní.
Příklad:
Anonymní třídy a členské třídyPříklad:
Mějte na paměti, že deklarace objektů pomocí anonymní třídy obdrží uzávěr obsahující data dostupná v kontextu v tomto bodě v kódu.
Příklad:
Příklad:
V důsledku toho je při vytváření třídy odvozené od třídy nejvyšší úrovně možné nahradit členskou třídu jednou z jejích odvozených tříd.
Příklad:
V abstraktní třídě je dokonce možné deklarovat členskou třídu formální , takže třídy dědějící z abstraktní třídy musí předefinovat členskou třídu.
Příklad:
Iterable a sekvenceIterovatelný objekt je objekt, který vytváří tok hodnot. Za tímto účelem musí objekt implementovat Iterovatelné rozhraní standardní cejlonské knihovny.
Zadejte aliasZa účelem zkrácení a faktorizace kódu je na Cejlonu možné definovat typ jako alias jednoho nebo více dalších, včetně jeho parametrizovaných typů. To platí pro třídy i pro rozhraní.
Příklad rozhraní:
interface Repas => Set<Aliment>;Příklad pro třídu:
class Alphabet({Caractere*} caractere) => ArrayList<Caractere>(caractere);V případě třídy musí být definovány formální parametry, aby bylo možné vytvořit instanci třídy.
Můžete také vytvořit pojmenovaný alias pomocí klíčového slova alias . Je nezbytné vytvořit alias spojení nebo průnik typů.
Příklad:
alias Lists => ArrayList|LinkedList; BalíčkyNa rozdíl od Javy je balíček definován v konkrétním souboru s názvem package.ceylon. Musí být definován pro každý adresář modulu.
Příklad:
ModulyModul je definován souborem s názvem module.ceylon, který musí být v kořenovém adresáři stromu balíčku.
Příklad:
Po sestavení jsou cejlonské moduly k dispozici buď ve formě .car archivů, které se mají použít na JVM, nebo ve formě souboru .js, který lze použít v Javascript.
Syntaxe je podobná syntaxi Java nebo C # . Malý rozdíl však: Ceylon zakazuje vynechat složené závorky, když chce provést pouze jednu instrukci, bloky, které mají být prováděny ve strukturách řízení, musí být povinně odděleny složenými závorkami.
Všeobecné obchodní podmínkyPříklady:
if (i == 3) { faitQuelqueChose(); }S klauzulí else:
if (i == 2) { faitQuelqueChose(); } else { faitAutreChose(); }Navzdory skutečnosti, že je zakázáno vynechat složené závorky k vymezení kódu, který má být spuštěn, je možné podmínky zřetězit:
if (i == 3) { faitQuelqueChose(); } else if (i == 2) { faitAutreChose(); } else { faitEncoreAutreChose(); }Syntaxe příkazu switch se naproti tomu velmi liší od syntaxe v jiných jazycích.
Příklad:
Integer valeur = 3; switch (valeur) case (1) { faitUneChose(); } case (2) { faitAutreChose(); } case (3) { faitEncoreAutreChose(); } else { faitDefaut(); }Uzavírací blok přepínače není ohraničen složenými závorkami, zatímco bloky příkazů case a else jsou. Nepoužíváme příkaz break k označení konce případu, jako v jazyce C nebo Java, což vylučuje možnost použití stejného bloku kódu pro několik případů, jak to můžeme udělat v těchto jazycích. Klíčové slovo else nahradí výchozí klíčové slovo nalezené v jazyce C nebo java. Toto je blok kódu, který bude spuštěn, pokud nebude ověřen žádný z uvedených případů.
Přepínač lze použít pro objekty typů Integer , charakter a String , stejně jako pro výčtové typy.
SponySmyčka while funguje stejně jako v C nebo Javě. Dokud je zadaná podmínka pravdivá, smyčka pokračuje v provádění.
Příklad:
Neexistuje ekvivalent pro do ... while smyčky, které lze najít v C nebo Java.
Na Cejlonu jsou komentáře psány přesně jako v Javě nebo C ++ : Jednořádkové komentáře musí začínat sekvencí //. Vše ostatní v řádku se poté považuje za komentář. Víceřádkové komentáře musí začínat / * a končit * /. Cokoli mezi těmito dvěma sekvencemi bude poté považováno za komentář.
Příklady:
/* Ceci est un commentaire */ /* Un autre commentaire */ // Ceci est également un commentaire String texte; // Encore un commentairePro vývoj na Cejlonu je k dispozici několik nástrojů: IDE založené na Eclipse složené ze sady pluginů, sada nástrojů příkazového řádku založených na Ant , zejména včetně kompilátorů a launcherů pro Java a JavaScript a dokumentačního nástroje, SDK včetně všech cejlonských knihoven, stejně jako úložiště modulů umožňujících získat požadované moduly a publikovat jejich vlastní, zvané Ceylon Herd.
K dispozici je také projekt portování nástrojů pro Eclipse v prostředí IntelliJ .