📜  Lolcode-类型

📅  最后修改于: 2020-11-03 07:00:10             🧑  作者: Mango


LOLCODE旨在测试编程语言设计的边界。它是一种深奥的编程语言,其灵感来自Internet上的有趣事物。本章使您了解LOLCODE类型。

种类

目前,LOLCODE中的变量类型为-

  • 字符串(YARN)
  • 整数(NUMBR)
  • 浮点数(NUMBAR)
  • 和布尔值(TROOF)
  • 数组(BUKKIT)

在LOLCODE中,变量类型由编译器动态处理。如果变量没有初始值,则称为无类型变量(在LOLCODE中称为NOOB)。

在LOLCODE中声明和使用不同类型的语法如下所示-

创建任何数据类型的变量

I HAS A  ITZ A 

创建变量并为其分配值

I HAS A  ITZ 

为已创建的数据类型分配值

 R 

无类型(NOOB)

除TROOF数据类型外,无类型数据类型(称为NOOB)不能转换为任何其他类型。将NOOB隐式转换为TROOF会使变量FAIL。之后,对NOOB的任何操作都会导致错误。

对于所有其他类型,将NOOB数据类型(即未初始化且没有任何初始值的类型)的显式强制转换为零值。

要定义一个无类型的变量,只需声明一个变量并分配一个值,如本示例所示-

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

当您运行上述程序时,您会发现以下结果-

sh-
4.3$ lci main.lo 
ANYVALUE
44

布尔值(TROOFS)

在LOLCODE中,布尔值有两种类型。 BOOLEAN通常具有两个值-true和false。但是,在LOLCODE中,布尔值分别称为TROOF,而true / false值分别称为WIN / FAIL。所有未初始化的值,如空字符串(“”)或空数组,都将全部转换为FAIL。所有其他初始化值的取值为WIN。

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

执行上面的代码时,您可以看到以下输出:

sh-4.3$ lci main.lo
FAIL

数值类型(NUMBR)

在LOLCODE中,NUMBR代表整数。任何数字序列都被视为NUMBR,除非在序列之间的任何位置都有小数。要使任何数字为负数,可以在其前面加上连字符(-),以表示负数。

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

上面的代码在运行时向您显示以下结果-

sh- 
4.3$ lci main.lo
0

与NUMBR相似,LOLCODE具有另一种数据类型,在许多编程语言中代表十进制或浮点数。在LOLCODE中,NUMBAR是包含一个小数点的浮点数。将NUMBAR强制转换为NUMBR会截断浮点数的小数部分,并将其作为NUMBR返回,不带任何小数。

琴弦(YARN)

在LOLCODE中,包含字符串的值(即字符串字面量(YARN))应以双引号(“”)开头和结尾。

字符串可以写任何东西,例如空格,逗号,句号,感叹号或任何其他符号。缺少任何单引号的字符串可能会导致错误。冒号在LOLCODE中用作转义字符,冒号后面的任何值都有特殊含义。

  • 🙂 -冒号后的右括号表示换行符(\ n)

  • :> -冒号后面的右尖括号表示制表符(\ t)

  • :o-冒号后面的‘o’字符表示响铃(哔)(\ g)

  • :“ -冒号后面的“”表示字面量双引号(”)

  • :: −冒号后面的冒号代表单个字面量冒号(:)

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

上面给出的代码在执行时产生以下输出-

sh-
4.3$ lci main.lo 
XYZ

布吉特

此类型表示一个数组。它具有命名的插槽,可以包含变量或函数。可以通过以下方式声明BUKKIT-

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

BUKKIT内部的函数还可以通过使用ME’Z [var]或ME IZ [函数名](YR [argument1](AN YR [argument2](AN YR [argument3] … )))MKAY。

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

这是运行上面给出的代码时将找到的输出-

sh-
4.3$ lci main.lo 
DOGE