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écimaux (0xffff0000)

Les expressions de politique 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 en type numérique lorsqu’ils sont transmis à une fonction d’extension, et les nombres sont convertis dans le type numérique de politique 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 text_at de la politique. 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.

Types simples