Types simples
Le langage autorise les valeurs des types simples suivants :
- Nombres
- Cordes
- Booléen
- Néant
- Autres types
Nombres
Tous les nombres (nombres entiers pairs) sont représentés par des valeurs à virgule flottante IEEE 754. Les nombres entiers jusqu’à 2^54 ont des représentations exactes. Les valeurs numériques peuvent être représentées par :
- Entiers décimaux signés et non signés (exemples : 10, -5)
- Nombres réels avec virgules décimales (10,5, 3,14159)
- Nombres réels avec exposants (1.0e+10)
- Hexadécimales (0xffff0000)
Les expressions de stratégie NetScaler sont de trois types numériques :
- Entiers 32 bits (num_at)
- Entiers 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.
Cordes
Les chaînes sont des séquences d’octets de n’importe quelle longueur. Ils correspondent au type policy text_at . Les chaînes peuvent contenir des octets nuls (0x00). Les données binaires arbitraires peuvent être contenues dans des chaînes, y compris n’importe quelle représentation de code de caractère (par exemple UTF-8 et Unicode complet). Toutefois, les fonctions de chaîne telles que string.upper () supposent un ASCII 8 bits.
Les chaînes sont automatiquement allouées lorsqu’elles sont utilisées. Il n’est pas nécessaire (ni même moyen) d’allouer explicitement des tampons pour les chaînes. Les chaînes sont également automatiquement désallouées par la collecte des déchets lorsqu’elles ne sont plus utilisées. Il n’est pas nécessaire (ni même moyen) de libérer des chaînes de caractères de manière explicite. Cette allocation et cette désallocation automatiques permettent d’éviter certains problèmes courants dans des langages tels que le C, tels que les fuites de mémoire et les pointeurs qui pendent.
Les littéraux de chaîne sont des chaînes de caractères entre guillemets doubles ou simples. Il n’y a aucune différence entre les deux types de guillemets : « une chaîne littérale » est identique à « 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 peuvent être saisies à l’aide d’une barre oblique inverse et d’un à trois chiffres (\ d, \ dd, \ ddd). Les valeurs d’octets hexadécimales peuvent être saisies par une barre oblique inverse, un x et deux chiffres hexadécimaux (\ xhh)
Une syntaxe spéciale appelée notation entre crochets longs peut être utilisée pour les chaînes littérales longues et multilignes. Cette notation place la chaîne entre crochets doubles avec zéro ou plusieurs signes égaux entre les crochets. L’idée est de trouver une combinaison de crochets et d’égaux qui ne figure pas dans la chaîne. Aucune séquence d’échappement n’est respectée dans la chaîne. Exemples :
[[Il s’agit d’une chaîne multiligne utilisant la notation entre crochets longs.]]
[= [Il s’agit d’une chaîne multiligne utilisant une notation longue avec [[ et ]] et un caractère non échappé dedans.] =]
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é faux et toute valeur différente de zéro est vraie.
Néant
nil est une valeur spéciale qui signifie « aucune valeur ». Il s’agit de son propre type et n’est équivalent à aucune autre valeur, contrairement à C où NULL est défini comme étant égal à zéro.
Autres types
Il existe deux autres types, les données utilisateur et les fils de discussion. Ce sont des sujets avancés qui ne sont pas abordés ici.