Types simples
Le langage permet des valeurs des types simples suivants :
- Chiffres
- Chaînes
- Booléen
- Nil
- Autres types
Chiffres
Tous les nombres (entiers pairs) sont représentés par des valeurs à virgule flottante IEEE 754. Les entiers jusqu’à 2^54 ont des représentations exactes. Les valeurs numériques peuvent être représentées par :
- Nombres entiers décimaux signés et non signés (exemples : 10, -5)
- Nombre réel avec des points décimaux (10.5, 3.14159)
- Nombre réel avec exposants (1.0e+10)
- Hexadécimales (0xffff0000)
Les expressions de stratégie Citrix ADC ont trois types numériques :
- Nombre entier 32 bits (num_at)
- Nombre entier 64 bits (unsigned_long_at)
- virgule flottante 64 bits (double_at)
Tous ces éléments sont convertis dans le type de nombre lorsqu’ils sont transmis dans une fonction d’extension, et les nombres sont convertis au type numérique de stratégie attendu lorsqu’ils sont renvoyés.
Chaînes
Les chaînes sont des séquences d’octets de n’importe quelle longueur. Ils correspondent au type text_at de la stratégie. Les chaînes peuvent contenir des octets nuls (0x00). Les données binaires arbitraires peuvent être conservées dans des chaînes, y compris toute représentation de code de caractères (par exemple UTF-8 et Unicode complet). Cependant, les fonctions de chaîne likestring.upper() supposent ASCII 8 bits.
Les chaînes sont automatiquement allouées lorsqu’elles sont utilisées. Il n’y a pas besoin (ou même moyen) d’allouer explicitement des tampons pour les chaînes. Les chaînes sont également automatiquement désallouées par nettoyage de la mémoire lorsqu’elles ne sont plus utilisées. Il n’y a pas besoin (ou même moyen) de libérer explicitement des chaînes. Cette allocation et désaffectation automatiques évite certains problèmes courants dans des langages comme C, tels que les fuites de mémoire et les pointeurs pendants.
Les littéraux de chaîne sont des chaînes de caractères entre guillemets doubles ou simples. Il n’y a pas de différence entre les deux types de guillemets : « un littéral de chaîne » est le même que « une chaîne littérale ». La barre oblique inverse habituelle est disponible : \s (bell), \b (backspace), \f (feed de formulaire), \n (saut de ligne), \t (onglet horizontal), \\ (barre oblique inverse), \” (guillemet double) et \’ (guillemet simple). Les valeurs décimales d’octets peuvent être saisies par une barre oblique inverse et un à trois chiffres (d, dd, ddd). Les valeurs d’octets hexadécimaux peuvent être saisies par une barre oblique inverse, un x et deux chiffres hexadécimaux (xhh)
Un appel de syntaxe spécial, la notation de crochets longs peut être utilisé pour de longs littéraux de chaînes multilignes. Cette notation enferme la chaîne entre crochets doubles avec zéro ou plus de signes égaux entre les parenthèses — l’idée est de trouver une combinaison de crochets et d’égaux qui ne se trouve pas dans la chaîne. Aucune séquence d’échappement n’est respectée dans la chaîne. Exemples :
[[This is a multi-line string using long bracket notation.]]
[= [Il s’agit d’une chaîne multiligne utilisant une notation longue avec [et ]] et une chaîne inexploitée.] =]
La notation de crochets longs peut être utilisée pour faire un commentaire multi-ligne. Exemple :
—[[ Il s’agit d’un commentaire multiligne. –]]
Booléen
Les valeurs booléennes vraies et fausses habituelles sont fournies. Notez que les valeurs booléennes sont différentes des valeurs numériques, contrairement à C où zéro est supposé être faux et toute valeur non nulle est vraie.
Nil
nil est une valeur spéciale qui signifie « aucune valeur ». Il est son propre type et n’est équivalent à aucune autre valeur, contrairement à C où NULL est défini comme zéro.
Autres types
Il existe deux autres types, userdata et threads. Ce sont des sujets avancés qui ne sont pas abordés ici.