A Blue programozási nyelv

Sablonok

Az osztályokat lehet típussal paraméterezni. Ennek két fajtája van: a megszorításos és a megszorítás nélküli.

A megszorítás nélküli generic esetén a típus tetszőleges lehet.


Példa:
class Stack<ELEM_TYPE> is internal var st: Array<ELEM_TYPE> interface ... routines push (elem: ELEM_TYPE) is == az elemert betesszuk a verembe pop-> (elem: ELEM_TYPE) is == a verem tetejet kivesszuk es az elembe tesszuk end class class client uses Stack, Figure internal var s1: Stack<Integer> s2: Stack<Figure> f: Figure ... s1.push(42) s1.push(f) end class

A generic osztályon belül (itt a Stack) a formális generic paraméter (ELEM_TYPE) megengedett típus. Használható változók, paraméterek és visszatérési értékek deklarációjára.

Egy osztálynak több generic paramétere is lehet. A példányosításnál az aktuális generic paraméterek száma meg kell egyezzen az osztály fejlécében lévő azonosító listával, azaz a formális generic paraméterek számával.


Példa:
class List<T1,T2> is ... end class class client uses List internal var l: List<String,Integer> ... end class
A megszorításos generic esetén a típusra valamilyen megkötést adunk, például, hogy valamilyen osztály alosztálya kell, hogy legyen:
Példa:
class List<T is Comparable> is ... end class
Ebben a példában a List osztályt csak a Comparable osztály alosztályával lehet paraméterezni. A Comparable osztály műveletei a List osztályon belül használhatók a T típusú változókra.