| 
 | 
|  | 
| 
 | 
| Dit artikel is beschikbaar in: English Castellano ChineseBig5 ChineseGB Deutsch Francais Italiano Nederlands Turkce Korean | 
| 
 ![[Foto van de Auteur]](../../common/images/Brent-Welch.jpg)  door Brent B. Welch Over de auteur: 
Brent Welch vermaakt zich met het sleutelen aan zijn website
 www.scriptics.com
 waarin onder andere een database is te vinden met referenties -voorzien van
 commentaar- naar Tcl gerelateerde URLs (het: "Tcl Resource Center") en de
 e-commerce infrastructuur voor het product  Inhoud: | 
![[Illustratie]](../../common/images/illustration110.gif) 
Kort:
Dit artikel behandelt het basisconcept en de syntaxis van de taal Tcl.
|  | 
In vergelijking met andere script talen heeft Tcl een eenvoudige syntaxis.
cmd arg arg arg
  $foo
  foo.
  [clock seconds]
  clock seconds, wat de huidige tijd in seconden geeft.
  "meerdere woorden"
  {meerdere woorden}
  \
  Hieronder een Tcl commando dat de huidige tijd laat zien. Het maakt gebruik van
 drie Tcl commando's: set, clock en puts. Het
 set commando wijst waarden toe aan variabelen. Het clock
 commando kan omgaan met tijdsgegevens en puts kan waardes afdrukken.
set seconden [clock seconds] puts "Het is [clock format $seconden]"
Merk op dat het dollarteken niet wordt gebruikt bij het toekennen aan een variabele.
 De variabele seconden is niet nodig in dit voorbeeld. Het afdrukken
 kan met één commando:
puts "Het is [clock format [clock seconds]]"
De Tcl syntaxis is erop gericht de parser in drie stappen te laten evalueren: groeperen van argumenten, substitueren van resultaten en commando's aanroepen.
puts commando.
  
  $foo met de
 waarde van foo en vervangt geneste commando's (binnen de vierkante
 haken) met het resultaat ervan. Belangrijk is hier dat substituties worden gedaan
 ná het groeperen. Hierdoor wordt vermeden dat ongebruikelijke waarden de structuur
 in een commando compliceren.
  
  In dit voorbeeld worden accolades gebruikt voor het groeperen van argumenten zonder dat hierin substitutie plaatsvindt. Het is de implementatie van hetset i 0 while {$i < 10} { puts "$i squared = [expr $i*$i]" incr i }
while commando die weet dat het eerste argument een expressie is en
 het tweede nog meer Tcl commando's. De accolades groeperen dus twee argumenten:
 de logische expressie die de lus stuurt en de commando's binnen de lus.
Verder zien we twee rekenkundige expressies: de vergelijking en de vermenigvuldiging.
 Het while commando interpreteert het eerste argument automatisch als
 zijnde een expressie. In andere gevallen moet men de expressie expliciet aangeven
 middels het expr commando om een rekenkundige evaluatie te forceren.
 
expr aanroept voor het afhandelen van rekenkundige
 expressies, puts voor het afhandelen van uitvoerfuncties en
 set om waarden aan variabelen toe te kennen. Deze Tcl commando's zijn
 geïmplementeerd door C-functies die zichzelf aanmelden bij Tcl. Deze functies
 accepteren de argumenten als strings en retourneren een nieuwe
 string als resultaat. Het is heel eenvoudig om dit soort C functies te
 maken. De functie kan van alles doen. Van het benaderen van databases tot het
 creëren van een grafische gebruikersinterface. De taal Tcl weet niet echt wat
 het commando doet. Het groepeert slechts argumenten, substitueert resultaten en
 roept commando's aan.
 
proc fac {x} {
    if {$x < 0} {
        error "Ongeldig argument $x: moet een positief geheel getal zijn"
    } elseif {$x <= 1} {
        return 1
    } else {
        return [expr $x * [fac [expr $x-1]]]
    }
}
 
| 
 | 
| Site onderhouden door het LinuxFocus editors team © Brent B. Welch, FDL LinuxFocus.org Klik hier om een fout te melden of commentaar te geven | 
2002-06-08, generated by lfparser version 2.28