Lolcode - Tipos
LOLCODE está diseñado para probar los límites del diseño del lenguaje de programación. Es un lenguaje de programación esotérico inspirado en las cosas divertidas de Internet. Este capítulo le brinda una comprensión de los tipos de LOLCODE.
Tipos
Actualmente, los tipos de variables en LOLCODE son:
- cadenas (YARN)
- enteros (NUMBR)
- flotadores (NUMBAR)
- y booleanos (TROOF)
- Matrices (BUKKIT)
En LOLCODE, el compilador maneja dinámicamente el tipo de variable. Si una variable no tiene un valor inicial, se llama sin tipo (conocido como NOOB en LOLCODE).
La sintaxis para declarar y usar diferentes tipos en LOLCODE se muestra a continuación:
Para crear una variable de cualquier tipo de datos
I HAS A <VARIABLE> ITZ A <DATA TYPE>
Para crear una variable y asignarle un valor
I HAS A <VARIABLE> ITZ <EXPRESSION<
Para asignar un valor a un tipo de datos ya creado
<VARIABLE> R <EXPRESSION>
Sin tipo (NOOB)
El tipo de datos sin tipo (conocido como NOOB), no se puede convertir en ningún otro tipo excepto en un tipo de datos TROOF. La conversión implícita de un NOOB en TROOF hace que la variable FAIL. Después de eso, cualquier operación en un NOOB resulta en un error.
Las conversiones explícitas de un tipo de datos NOOB (es decir, los tipos que no están inicializados y no tienen ningún valor inicial) dan como resultado valores cero para todos los demás tipos.
Para definir una variable sin tipo, simplemente declare una variable y asigne un valor como se muestra en este ejemplo:
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
Cuando ejecute el programa anterior, encontrará el siguiente resultado:
sh-
4.3$ lci main.lo
ANYVALUE
44
Booleanos (TROOFS)
En LOLCODE, los valores booleanos son de dos tipos. BOOLEAN generalmente tiene dos valores: verdadero y falso. Pero, en LOLCODE, el booleano se conoce como TROOF, y los valores verdadero / falso se conocen como WIN / FAIL respectivamente. Todos los valores no inicializados, como una cadena vacía ("") o una matriz vacía, se convertirán en FAIL. Todos los demás valores inicializados se evalúan como WIN.
Ejemplo
HAI 1.2
I HAS A VAR3 ITZ A TROOF
VAR3 R "FAIL"
VISIBLE VAR3
KTHXBYE
Puede ver la siguiente salida cuando ejecuta el código anterior:
sh-4.3$ lci main.lo
FAIL
Tipos numéricos (NUMBR)
En LOLCODE, un NUMBR significa un número entero. Cualquier secuencia de dígitos se considera un NUMBR, a menos que tenga un decimal en cualquier lugar entre la secuencia. Para hacer que cualquier número sea negativo, puede ir precedido de un guión (-) que significa un número negativo.
Ejemplo
HAI 1.2
I HAS A VAR3 ITZ A NUMBR
VISIBLE VAR3
KTHXBYE
El código anterior le muestra el siguiente resultado cuando lo ejecuta:
sh-
4.3$ lci main.lo
0
Similar a NUMBR, LOLCODE tiene otro tipo de datos, que representa un decimal o un flotante en muchos lenguajes de programación. En LOLCODE, un NUMBAR es un flotante que contiene un punto decimal. Al convertir un NUMBAR en un NUMBR, se trunca la parte decimal del número de coma flotante y se devuelve como NUMBR, sin ningún decimal.
Cuerdas (HILO)
En LOLCODE, el valor que contiene cadenas, es decir, los literales de cadena (YARN) deben comenzar y terminar con comillas dobles ("”).
Se puede escribir cualquier cosa dentro de la cadena, como espacio, coma, punto, exclamación o cualquier otro símbolo. Una cadena en la que falte una comilla simple puede provocar un error. Los dos puntos se utilizan como caracteres de escape en LOLCODE, y cualquier valor que siga a dos puntos tiene un significado especial.
:) - Un corchete de cierre seguido de dos puntos representa una nueva línea (\ n)
:> - Un corchete de ángulo de cierre seguido de dos puntos representa una tabulación (\ t)
:o - A ‘o’ el carácter que sigue a dos puntos representa una campana (bip) (\ g)
:" - Un "seguido de dos puntos representa una comilla doble literal (")
:: - Los dos puntos después de dos puntos representan un solo punto literal (:)
Ejemplo
HAI 1.2
I HAS A VAR3 ITZ A YARN
VAR3 R "XYZ"
VISIBLE VAR3
KTHXBYE
El código dado arriba produce el siguiente resultado en la ejecución:
sh-
4.3$ lci main.lo
XYZ
BUKKIT
Este tipo representa una matriz. Tiene ranuras con nombre, que pueden contener variables o funciones. Un BUKKIT se puede declarar de la siguiente manera:
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
Una función dentro de un BUKKIT también puede acceder a variables y otras funciones del BUKKIT usando ME'Z [var] o ME IZ [nombre de función] (YR [argumento1] (AN YR [argumento2] (AN YR [argumento3] ... ))) MKAY.
Ejemplo
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
Esta es la salida que encontrará cuando ejecute el código dado anteriormente:
sh-
4.3$ lci main.lo
DOGE