Lolcode - Tipos

LOLCODE é projetado para testar os limites do design da linguagem de programação. É uma linguagem de programação esotérica inspirada nas coisas engraçadas da Internet. Este capítulo fornece uma compreensão dos tipos LOLCODE.

Tipos

Atualmente, os tipos de variáveis ​​em LOLCODE são -

  • strings (YARN)
  • inteiros (NUMBR)
  • flutuadores (NUMBAR)
  • e booleanos (TROOF)
  • Matrizes (BUKKIT)

Em LOLCODE, o tipo de variável é tratado dinamicamente pelo compilador. Se uma variável não tiver um valor inicial, ela é chamada de não digitada (conhecida como NOOB em LOLCODE).

A sintaxe para declarar e usar diferentes tipos em LOLCODE é mostrada abaixo -

Para criar uma variável de qualquer tipo de dados

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

Para criar uma variável e atribuir um valor a ela

I HAS A <VARIABLE> ITZ <EXPRESSION<

Para atribuir um valor a um tipo de dados já criado

<VARIABLE> R <EXPRESSION>

Sem tipo (NOOB)

O tipo de dados sem tipo (conhecido como NOOB) não pode ser convertido em qualquer outro tipo, exceto em um tipo de dados TROOF. A conversão implícita de um NOOB em TROOF torna a variável FAIL. Depois disso, qualquer operação em um NOOB resulta em um erro.

Casts explícitos de um tipo de dados NOOB (ou seja, os tipos que não foram inicializados e não têm nenhum valor inicial) resultam em valores zero para todos os outros tipos.

Para definir uma variável sem tipo, basta declarar uma variável e atribuir um valor conforme mostrado neste exemplo -

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

Ao executar o programa acima, você encontrará o seguinte resultado -

sh-
4.3$ lci main.lo 
ANYVALUE
44

Booleanos (TROOFS)

Em LOLCODE, os valores booleanos são de dois tipos. BOOLEAN geralmente tem dois valores - verdadeiro e falso. Mas, em LOLCODE, o booleano é conhecido como TROOF e os valores verdadeiro / falso são conhecidos como WIN / FAIL, respectivamente. Todos os valores não inicializados, como uma string vazia ("") ou uma matriz vazia, serão convertidos em FAIL. Todos os outros valores inicializados são avaliados como WIN.

Exemplo

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

Você pode ver a seguinte saída ao executar o código acima -

sh-4.3$ lci main.lo
FAIL

Tipos numéricos (NUMBR)

Em LOLCODE, um NUMBR significa um inteiro. Qualquer sequência de dígitos é considerada um NUMBR, a menos que tenha um decimal aparecendo em qualquer lugar entre a sequência. Para tornar qualquer número negativo, ele pode ser precedido por um hífen (-) que significa um número negativo.

Exemplo

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

O código acima mostra o seguinte resultado quando você o executa−

sh- 
4.3$ lci main.lo
0

Semelhante a NUMBR, LOLCODE tem outro tipo de dados, que representa um decimal ou um float em muitas linguagens de programação. Em LOLCODE, um NUMBAR é um float que contém um ponto decimal. Converter um NUMBAR em um NUMBR trunca a parte decimal do número de ponto flutuante e o retorna como NUMBR, sem nenhum decimal.

Strings (YARN)

Em LOLCODE, o valor que contém strings, ou seja, strings literais (YARN) deve começar e terminar com aspas duplas ("”).

Qualquer coisa pode ser escrita dentro da string, como espaço, vírgula, ponto final, exclamação ou qualquer outro símbolo. Uma string em que não há aspas simples pode causar um erro. Os dois pontos são usados ​​como caracteres de escape em LOLCODE e qualquer valor após os dois pontos recebe um significado especial.

  • :) - Um colchete de fechamento após dois pontos representa uma nova linha (\ n)

  • :> - Um colchete angular de fechamento após dois pontos representa uma tabulação (\ t)

  • :o - A ‘o’ caractere após dois pontos representa um sino (bipe) (\ g)

  • :" - Um “após dois pontos representa uma aspa dupla literal (")

  • :: - Os dois pontos após os dois pontos representam um único ponto literal (:)

Exemplo

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

O código fornecido acima produz a seguinte saída durante a execução -

sh-
4.3$ lci main.lo 
XYZ

BUKKIT

Este tipo representa uma matriz. Ele tem slots nomeados, que podem conter variáveis ​​ou funções. Um BUKKIT pode ser declarado da seguinte maneira -

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

Uma função dentro de um BUKKIT também pode acessar variáveis ​​e outras funções do BUKKIT usando ME'Z [var] ou ME IZ [nome da função] (YR [argumento1] (AN YR [argumento2] (AN YR [argumento3] ... ))) MKAY.

Exemplo

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 é a saída que você encontrará ao executar o código fornecido acima -

sh-
4.3$ lci main.lo 
DOGE