Tcl - Types de données
Le type de données primitif de Tcl est une chaîne et nous pouvons souvent trouver des guillemets sur Tcl en tant que langage de chaîne uniquement. Ces types de données primitifs créent à leur tour des types de données composites pour la liste et le tableau associatif. Dans Tcl, les types de données peuvent représenter non seulement les objets Tcl simples, mais peuvent également représenter des objets complexes tels que des poignées, des objets graphiques (principalement des widgets) et des canaux d'E / S. Examinons les détails de chacun des éléments ci-dessus.
Objets Tcl simples
En Tcl, qu'il s'agisse d'un nombre entier, d'un booléen, d'un nombre à virgule flottante ou d'une chaîne. Lorsque vous souhaitez utiliser une variable, vous pouvez lui affecter directement une valeur, il n'y a pas d'étape de déclaration dans Tcl. Il peut y avoir des représentations internes pour ces différents types d'objets. Il peut transformer un type de données en un autre si nécessaire. La syntaxe pour attribuer une valeur à une variable est la suivante -
#!/usr/bin/tclsh
set myVariable 18
puts $myVariable
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -
18
L'instruction ci-dessus créera un nom de variable myVariable et le stockera sous forme de chaîne même si nous n'avons pas utilisé de guillemets doubles. Maintenant, si nous essayons de faire une arithmétique sur la variable, elle est automatiquement transformée en entier. Un exemple simple est présenté ci-dessous -
#!/usr/bin/tclsh
set myVariable 18
puts [expr $myVariable + 6 + 9]
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -
33
Une chose importante à noter est que ces variables n'ont aucune valeur par défaut et doivent recevoir une valeur avant d'être utilisées.
Si nous essayons d'imprimer en utilisant des puts, le nombre est transformé en une chaîne appropriée. Le fait d'avoir deux représentations, interne et externe, aide Tcl à créer des structures de données complexes facilement par rapport à d'autres langages. En outre, Tcl est plus efficace en raison de sa nature d'objet dynamique.
Représentations de chaîne
Contrairement à d'autres langues, en Tcl, vous n'avez pas besoin d'inclure des guillemets doubles lorsqu'il ne s'agit que d'un seul mot. Un exemple peut être -
#!/usr/bin/tclsh
set myVariable hello
puts $myVariable
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -
hello
Lorsque nous voulons représenter plusieurs chaînes, nous pouvons utiliser des guillemets doubles ou des accolades. Il est montré ci-dessous -
#!/usr/bin/tclsh
set myVariable "hello world"
puts $myVariable
set myVariable {hello world}
puts $myVariable
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -
hello world
hello world
liste
La liste n'est rien d'autre qu'un groupe d'éléments. Un groupe de mots utilisant des guillemets doubles ou des accolades peut être utilisé pour représenter une liste simple. Une liste simple est présentée ci-dessous -
#!/usr/bin/tclsh
set myVariable {red green blue}
puts [lindex $myVariable 2]
set myVariable "red green blue"
puts [lindex $myVariable 1]
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -
blue
green
Tableau associatif
Les tableaux associatifs ont un index (clé) qui n'est pas nécessairement un entier. C'est généralement une chaîne qui agit comme des paires clé / valeur. Un exemple simple est présenté ci-dessous -
#!/usr/bin/tclsh
set marks(english) 80
puts $marks(english)
set marks(mathematics) 90
puts $marks(mathematics)
Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -
80
90
Poignées
Les poignées Tcl sont couramment utilisées pour représenter des fichiers et des objets graphiques. Ceux-ci peuvent inclure des poignées pour les demandes réseau et également d'autres canaux tels que la communication du port série, les prises ou les périphériques d'E / S. Voici un exemple où un descripteur de fichier est créé.
set myfile [open "filename" r]
Vous verrez plus de détails sur les fichiers dans le chapitre E / S des fichiers Tcl .