Lolcode - Tipi

LOLCODE è progettato per testare i confini del design del linguaggio di programmazione. È un linguaggio di programmazione esoterico ispirato alle cose divertenti su Internet. Questo capitolo fornisce una comprensione dei tipi di LOLCODE.

Tipi

Attualmente, i tipi di variabili in LOLCODE sono:

  • stringhe (YARN)
  • numeri interi (NUMBR)
  • floats (NUMBAR)
  • e booleani (TROOF)
  • Array (BUKKIT)

In LOLCODE il tipo di variabile viene gestito dinamicamente dal compilatore. Se una variabile non ha un valore iniziale, viene chiamata untyped (noto come NOOB in LOLCODE).

La sintassi per la dichiarazione e l'utilizzo di diversi tipi in LOLCODE è mostrata di seguito:

Per creare una variabile di qualsiasi tipo di dati

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

Per creare una variabile e assegnarle un valore

I HAS A <VARIABLE> ITZ <EXPRESSION<

Per assegnare un valore a un tipo di dati già creato

<VARIABLE> R <EXPRESSION>

Non tipizzato (NOOB)

Il tipo di dati non tipizzato (noto come NOOB) non può essere convertito in nessun altro tipo tranne che in un tipo di dati TROOF. Il casting implicito di un NOOB in TROOF rende la variabile FAIL. Dopo di che qualsiasi operazione su un NOOB si traduce in un errore.

I cast espliciti di un tipo di dati NOOB (cioè i tipi che non sono inizializzati e non hanno alcun valore iniziale) restituiscono valori zero per tutti gli altri tipi.

Per definire una variabile non tipizzata, basta dichiarare una variabile e assegnare un valore come mostrato in questo esempio:

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

Quando esegui il programma sopra, troverai il seguente risultato:

sh-
4.3$ lci main.lo 
ANYVALUE
44

Booleani (TROOFS)

In LOLCODE, i valori booleani sono di due tipi. BOOLEANO generalmente ha due valori: vero e falso. Tuttavia, in LOLCODE, il valore booleano è noto come TROOF e i valori true / false sono noti rispettivamente come WIN / FAIL. Tutti i valori non inizializzati come una stringa vuota ("") o un array vuoto verranno tutti convertiti in FAIL. Tutti gli altri valori inizializzati restituiscono WIN.

Esempio

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

Puoi vedere il seguente output quando esegui il codice sopra -

sh-4.3$ lci main.lo
FAIL

Tipi numerici (NUMBR)

In LOLCODE, un NUMBR sta per un numero intero. Qualsiasi sequenza di cifre è considerata un NUMBR, a meno che non abbia un decimale che appare ovunque tra la sequenza. Per rendere un numero negativo, può essere preceduto da un trattino (-) che indica un numero negativo.

Esempio

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

Il codice sopra mostra il seguente risultato quando lo esegui -

sh- 
4.3$ lci main.lo
0

Simile a NUMBR, LOLCODE ha un altro tipo di dati, che rappresenta un decimale o un float in molti linguaggi di programmazione. In LOLCODE, un NUMBAR è un float contenente un punto decimale. Il cast di un NUMBAR su un NUMBR tronca la parte decimale del numero in virgola mobile e lo restituisce come NUMBR, senza alcun decimale.

Stringhe (YARN)

In LOLCODE, il valore contenente le stringhe, cioè i valori letterali di stringa (YARN) deve iniziare e finire con virgolette doppie ("”).

Qualsiasi cosa può essere scritta all'interno della stringa, come spazio, virgola, punto, punto esclamativo o qualsiasi altro simbolo. Una stringa in cui manca una virgoletta singola può causare un errore. I due punti vengono utilizzati come caratteri di escape in LOLCODE e qualsiasi valore che segue i due punti assume un significato speciale.

  • :) - Una parentesi quadra di chiusura che segue i due punti rappresenta una nuova riga (\ n)

  • :> - Una parentesi angolare di chiusura che segue i due punti rappresenta una tabulazione (\ t)

  • :o - A ‘o’ il carattere che segue i due punti rappresenta un campanello (beep) (\ g)

  • :" - Un "che segue i due punti rappresenta una virgoletta doppia letterale (")

  • :: - I due punti che seguono i due punti rappresentano un singolo due punti letterali (:)

Esempio

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

Il codice sopra riportato produce il seguente output al momento dell'esecuzione:

sh-
4.3$ lci main.lo 
XYZ

BUKKIT

Questo tipo rappresenta un array. Ha slot denominati, che possono contenere variabili o funzioni. Un BUKKIT può essere dichiarato nel modo seguente:

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 funzione all'interno di un BUKKIT può anche accedere alle variabili e ad altre funzioni del BUKKIT usando ME'Z [var] o ME IZ [nome funzione] (YR [argomento1] (AN YR [argomento2] (AN YR [argomento3] ... ))) MKAY.

Esempio

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

Questo è l'output che troverai quando esegui il codice sopra indicato -

sh-
4.3$ lci main.lo 
DOGE