Lolcode - Types

LOLCODE est conçu pour tester les limites de la conception du langage de programmation. C'est un langage de programmation ésotérique inspiré des choses amusantes sur Internet. Ce chapitre vous donne une compréhension des types LOLCODE.

Les types

Actuellement, les types de variables dans LOLCODE sont -

  • chaînes (YARN)
  • entiers (NUMBR)
  • flotteurs (NUMBAR)
  • et booléens (TROOF)
  • Tableaux (BUKKIT)

Dans LOLCODE, le type de variable est géré dynamiquement par le compilateur. Si une variable n'a pas de valeur initiale, elle est appelée non typée (appelée NOOB dans LOLCODE).

La syntaxe pour déclarer et utiliser différents types dans LOLCODE est indiquée ci-dessous -

Pour créer une variable de n'importe quel type de données

I HAS A <VARIABLE> ITZ A <DATA TYPE>

Pour créer une variable et lui attribuer une valeur

I HAS A <VARIABLE> ITZ <EXPRESSION<

Pour affecter une valeur à un type de données déjà créé

<VARIABLE> R <EXPRESSION>

Non tapé (NOOB)

Le type de données non typé (appelé NOOB) ne peut être converti en aucun autre type, sauf en un type de données TROOF. Le transtypage implicite d'un NOOB dans TROOF rend la variable FAIL. Après cela, toute opération sur un NOOB entraîne une erreur.

Les transtypages explicites d'un type de données NOOB (c'est-à-dire les types qui ne sont pas initialisés et n'ont aucune valeur initiale) donnent des valeurs nulles pour tous les autres types.

Pour définir une variable non typée, déclarez simplement une variable et attribuez une valeur comme indiqué dans cet exemple -

HAI 1.2
I HAS A VAR3
VAR3 R "ANYVALUE"
VISIBLE VAR3

BTW Or declare in same line
I HAS A VAR4 ITZ 44
VISIBLE VAR4
KTHXBYE

Lorsque vous exécutez le programme ci-dessus, vous trouverez le résultat suivant -

sh-
4.3$ lci main.lo 
ANYVALUE
44

Booléens (TROUFS)

Dans LOLCODE, les valeurs booléennes sont de deux types. BOOLEAN a généralement deux valeurs: true et false. Mais, dans LOLCODE, le booléen est connu sous le nom de TROOF, et les valeurs vrai / faux sont appelées respectivement WIN / FAIL. Toutes les valeurs non initialisées telles qu'une chaîne vide ("") ou un tableau vide seront toutes converties en FAIL. Toutes les autres valeurs initialisées sont évaluées à WIN.

Exemple

HAI 1.2
I HAS A VAR3 ITZ A TROOF
VAR3 R "FAIL"
   VISIBLE VAR3
KTHXBYE

Vous pouvez voir la sortie suivante lorsque vous exécutez le code ci-dessus -

sh-4.3$ lci main.lo
FAIL

Types numériques (NUMBR)

Dans LOLCODE, un NUMBR représente un entier. Toute séquence de chiffres est considérée comme un NUMBR, sauf si une décimale apparaît n'importe où entre la séquence. Pour rendre un nombre négatif, il peut être précédé d'un tiret (-) qui signifie un nombre négatif.

Exemple

HAI 1.2
I HAS A VAR3 ITZ A NUMBR
   VISIBLE VAR3
KTHXBYE

Le code ci-dessus vous montre le résultat suivant lorsque vous l'exécutez -

sh- 
4.3$ lci main.lo
0

Semblable à NUMBR, LOLCODE a un autre type de données, qui représente une décimale ou un flottant dans de nombreux langages de programmation. Dans LOLCODE, un NUMBAR est un flottant contenant une virgule décimale. La conversion d'un NUMBAR en NUMBR tronque la partie décimale du nombre à virgule flottante et la renvoie sous la forme d'un NUMBR, sans aucune décimale.

Chaînes (YARN)

Dans LOLCODE, la valeur contenant des chaînes, c'est-à-dire des chaînes littérales (YARN) doit commencer et se terminer par des guillemets doubles ("").

Tout peut être écrit à l'intérieur de la chaîne, comme un espace, une virgule, un point, une exclamation ou tout autre symbole. Une chaîne dans laquelle un guillemet simple est manquant peut provoquer une erreur. Les deux points sont utilisés comme caractères d'échappement dans LOLCODE, et toute valeur qui suit un signe deux-points a une signification particulière.

  • :) - Un crochet fermant après un deux-points représente une nouvelle ligne (\ n)

  • :> - Une parenthèse de fermeture après un deux-points représente une tabulation (\ t)

  • :o - Un ‘o’ le caractère suivant un deux-points représente une cloche (bip) (\ g)

  • :" - Un «après un deux-points représente un guillemet double littéral (")

  • :: - Un deux-points après un deux-points représente un seul deux-points littéral (:)

Exemple

HAI 1.2
I HAS A VAR3 ITZ A YARN
VAR3 R "XYZ"
   VISIBLE VAR3
KTHXBYE

Le code donné ci-dessus produit la sortie suivante lors de l'exécution -

sh-
4.3$ lci main.lo 
XYZ

BUKKIT

Ce type représente un tableau. Il a des emplacements nommés, qui peuvent contenir des variables ou des fonctions. Un BUKKIT peut être déclaré de la manière suivante -

BTW declaration of the BUKKIT
I HAS A [object] ITZ A BUKKIT BTW creating a variable in a slots
[object] HAS A [var] ITZ [value] BTW creating a function inside the BUKKIT

HOW IZ [object] [function name] (YR [argument1] (AN YR [argument2] (AN YR [argument3] ...)))
[function code]
IF U SAY SO

Une fonction à l'intérieur d'un BUKKIT peut également accéder à des variables et à d'autres fonctions du BUKKIT en utilisant ME'Z [var] ou ME IZ [nom de la fonction] (YR [argument1] (AN YR [argument2] (AN YR [argument3] ... ))) MKAY.

Exemple

HAI 1.2
   I HAS A VAR6 ITZ A BUKKIT
   BTW DECLARING AN ARRAY
   VAR6 HAS A VAR7 ITZ "DOGE"
   
   BTW VAR7 IS A STRING VARIABLE THAT IS INSERTED  INTO ARRAY VAR6
   VISIBLE VAR6'Z VAR7
   BTW GET THE ELEMENT OF ARRAY
KTHXBYE

C'est la sortie que vous trouverez lorsque vous exécuterez le code donné ci-dessus -

sh-
4.3$ lci main.lo 
DOGE