Személyes eszközök
Keresés

 

A InfoWiki wikiből

(Változatok közti eltérés)
(Saját típusok)
(Függvények típusai)
48. sor: 48. sor:
=== Függvények típusai ===
=== Függvények típusai ===
 +
A függvények paramétereinek típusát megadhatjuk (statikus típusrendszer). Amennyiben nem adjuk meg, úgy a függvényhívások során automatikus típuslevezetés lesz alkalmazva, és az aktuális paraméterek típusai, valamint a függvény (meg nem adott) típusai közötti egyeztethetőség fordítási időben lesz ellenőrízve.
 +
 +
Egyszerű típusmegadás: a függvény argumentumainak típusai a kódban explicit módon meg lettek adva:
 +
<code lang="csharp">
 +
func:sinus double -> double
 +
sinus rad = net.call { result = Math.Sin( rad ) }
 +
 +
func:sinusL longDouble -> longDouble
 +
sinusL rad = net.call { result = ExtendMath.Sin( rad ) }
 +
</code>
 +
 +
Amennyiben a függvénynél argumentum-típusok nem kerültek megadásra, úgy a paraméterekhez a fordító típus-sejtéseket fűz, és a konkrét függvény hívások esetén a konkrét típusok ismeretében olyan egyezéseket keres, ahol a sejtés illeszthető a típusokra:
 +
 +
<code lang="csharp">
 +
cosinus rad = net.call { result = Math.Cos( rad ) }
 +
</code>
 +
 +
A fenti esetben pl. sejthető, hogy a ''rad'' típusa ''double'' lesz, csakúgy mint a függvény visszatérési típusa is.
=== Típuslevezetés ===
=== Típuslevezetés ===

A lap 2008. december 13., 14:06-kori változata


Tartalomjegyzék

Típusrendszer

A TITAN-M típusrendszere tartalmaz valahány alaptípust, mely nyelvi szinten támogatott. Ezekből képezhetünk típus-konstruktorok segítségével rekord, touple, tömb, lista típusokat (saját típusok), illetve lehetőség van rá hogy currying segítségével függvény-típusokat is megadhassunk.

Alap típusrendszer

  • egész típusok (alapvetően a .NET nyelvi egész típusa)
    • byte, sbyte, short, ushort, int, uint, long, ulong
    • longInt mint speciális, tetszőlegesen sok számjegyet kezelő egész szám típus
  • valós típusok (alapvetően a .NET nyelvi valós típusa)
    • float, double
    • longDouble, mint speciális, tetszőleges pontosságú, tetszőlegesen sok számjegyet kezelő valós szám típus
  • karakter (char)
  • szöveg (string)
  • logikai (bool)
  • dátum (date)
  • idő (time)
  • dátum és idő egyben (datetime)

Saját típusok

  • rekord típus létrehozása a record kulcsszóval (az indentálás a nyelvi szintaktikai része!):
record ember
  fizetes int
  eletkor int
  testhomerseklet float
  • touple típus létrehozása zárójelezéssel (ebben a példában mint függvény visszatérési típus):
func fileba_iras:File Int -> (Int,Bool)
  • lista létrehozása szögletes zárójelezéssel (listát vár paraméterként, és listát ad vissza):
func primek:[int] -> [int]

Függvények típusai

A függvények paramétereinek típusát megadhatjuk (statikus típusrendszer). Amennyiben nem adjuk meg, úgy a függvényhívások során automatikus típuslevezetés lesz alkalmazva, és az aktuális paraméterek típusai, valamint a függvény (meg nem adott) típusai közötti egyeztethetőség fordítási időben lesz ellenőrízve.

Egyszerű típusmegadás: a függvény argumentumainak típusai a kódban explicit módon meg lettek adva:

func:sinus double -> double
sinus rad = net.call { result = Math.Sin( rad ) }
 
func:sinusL longDouble -> longDouble
sinusL rad = net.call { result = ExtendMath.Sin( rad ) }

Amennyiben a függvénynél argumentum-típusok nem kerültek megadásra, úgy a paraméterekhez a fordító típus-sejtéseket fűz, és a konkrét függvény hívások esetén a konkrét típusok ismeretében olyan egyezéseket keres, ahol a sejtés illeszthető a típusokra:

cosinus rad = net.call { result = Math.Cos( rad ) }

A fenti esetben pl. sejthető, hogy a rad típusa double lesz, csakúgy mint a függvény visszatérési típusa is.

Típuslevezetés

Operátorok

Beépített operátorok

Operátorok bővíthetősége

Függvények

Függvény-törzsek írása

Mintaillesztés

Feltételes blokkok

A lap eredeti címe: „http://wiki.ektf.hu/wiki/Titan:m-syntax
Nézetek
nincs sb_3.22.51.241 cikk