Variables

Les variables contiennent des valeurs qui peuvent changer lors de l’exécution de l’extension. En raison du typage dynamique, toute variable peut contenir des valeurs de n’importe quel type. Il n’y a pas de déclaration de type pour les variables. Au lieu de cela, le type d’une variable est déterminé au moment de l’exécution. En fait, le type de valeur d’une variable peut changer pendant l’exécution, bien que ce ne soit pas une pratique recommandée. Une variable a initialement la valeur nil.

Les noms de variables sont des identificateurs, de même que les chaînes de lettres, de chiffres et de traits de soulignement qui ne commencent pas par un chiffre. Exemples : en-têtes, en-têtes combined_headers.

Variables globales

Dans Lua, les variables qui ne sont pas déclarées autrement sont globales au sein du programme. Cependant, les variables globales ne sont pas autorisées dans les fonctions d’extension de stratégie, car il existe plusieurs moteurs de paquets dans lesquels une fonction peut être exécutée, et chaque moteur de paquets a sa propre mémoire.

Si vous utilisez une variable globale dans votre extension, vous obtiendrez une erreur d’exécution : essayez de mettre à jour ou de créer un rapport global dans /var/log/ns.log.

Les fautes de frappe dans les noms de variables sont un problème potentiel, car la variable avec la faute de frappe sera interprétée comme une autre variable globale et ne provoquera pas d’erreur de syntaxe comme dans un langage comme C ou Java. Comme indiqué ci-dessus, vous obtiendrez une erreur d’exécution à la place.

Variables locales

Une variable peut être déclarée locale à un bloc d’instructions, comme une fonction. Ceci est fait par nom variable local. La variable sera portée au bloc, c’est-à-dire qu’elle n’existera que dans le bloc. La déclaration locale peut éventuellement affecter une valeur à la variable.

Exemples :

local headers = {} local combined_headers = {}