Incr TCL (ITCL) är den första av de objektorienterade tilläggen till TCL -språket . Delvis implementerad i C- språk . Med dess användning skrivs biblioteket av grafiska widgets incr Widgets (iWidgets). Namnet på det här tillägget är en slags "översättning" av C++- namnet till Tcl-språket , incr- kommandot , liksom ++- operationen , ökar dess argument med 1.
Tillsammans med XOtcl och SNIT är det en av de tre mest populära objektorienterade Tcl-tilläggen [1] .
ITCL - definierar följande kommandon:
Som ett exempel ges ett objektomslag över Tcl-textfiler. Visar användningen av konfiguratorer.
klassfil { _ # beskriv och ställ in initiala värden # av lokala variabler privat variabel fid "" offentlig variabelnamn " " offentlig variabel åtkomst "r" # define constructor och destructor constructor { args } { eval configure $args # configure aktiverar konfiguratorer } förstörare { if { $fid != "" } { stäng $fid } } #describe class methods method get {} method put { line } method eof {} } # definiera metodkroppar body File::get {} { return [ gets $fid ] } body File::put { line } { lägger $fid $line } body File::eof {} { returnera [ :: eof $fid ] } # definiera konfigurator för # globalt variabelnamn # konfigurator för åtkomst skapas inte configbody File::name { if { $fid != "" } { stäng $fid } set fid [ öppna $name $access ] } # # File-klassen i aktion: # # skapa ett File x -objekt #configure dess namn x configure - name / etc / passwd #visa innehållet i filen rad för rad medan { ! [ xeof ] } { sätter "=> [x get]" } #delete objekt ta bort objekt xDe olika medlemmarna i en klass beskrivs med följande kommandon tillgängliga i klassdefinitionen: constructor , destructor , method , proc (till skillnad från en metod är inte ärvd), variabel , common (liknar statisk i C++), public , protected , private , set och array . Arv ställs in med kommandot inherit . Multipelarv är tillåtet. Alla metoder är virtuella. När du definierar en klass kan du använda metaprogrammeringstekniker , till exempel för att definiera flera lokala variabler i en loop, tillsammans med set och få accessorer till dem [3] .
Ett sammansatt lag (eller ensemble) definieras som:
ensemble name comp kommando arg arg ...eller
ensemble namecomposition { part nameDelar argument body … … ensemble nameSubConst { delnamnSubparts argument body … … } } _Tcl-ensembler är ett bekvämt syntaktisk tillägg till standardmekanismen för Tcl- namnutrymmesensemble . Denna mekanism låter dig gruppera flera kommandon i ett namnområde - en ensemble. Att anropa kommandot - en del av ensemblen ser ut så här:
nameConst nameParts argumentDet kan finnas valfritt antal ensemblekonstruktioner med samma namn, alla delar som definieras i dem kommer att inkluderas i samma ensemble [4] .