|
|
Dit artikel is beschikbaar in: English Castellano ChineseBig5 ChineseGB Deutsch Francais Italiano Nederlands Turkce Korean |
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: |
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