Lolcode - 类型
LOLCODE旨在测试编程语言设计的边界。它是一种深奥的编程语言,灵感来自互联网上的有趣事物。本章将帮助您了解LOLCODE的类型。
类型
目前,LOLCODE中的变量类型包括:
- 字符串 (YARN)
- 整数 (NUMBR)
- 浮点数 (NUMBAR)
- 布尔值 (TROOF)
- 数组 (BUKKIT)
在LOLCODE中,变量类型由编译器动态处理。如果变量没有初始值,则称为无类型(在LOLCODE中称为NOOB)。
下面显示了在LOLCODE中声明和使用不同类型的语法:
创建任何数据类型的变量
I HAS A <VARIABLE> ITZ A <DATA TYPE>
创建变量并为其赋值
I HAS A <VARIABLE> ITZ <EXPRESSION<
为已创建的数据类型赋值
<VARIABLE> R <EXPRESSION>
无类型 (NOOB)
无类型数据类型(称为NOOB)不能转换为任何其他类型,除了TROOF数据类型。将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中,布尔值有两种类型。布尔值通常有两个值——真和假。但在LOLCODE中,布尔值称为TROOF,真/假值分别称为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
此类型表示数组。它具有命名槽,可以包含变量或函数。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 [function name] (YR [argument1] (AN YR [argument2] (AN YR [argument3] ...))) MKAY访问BUKKIT的变量和其他函数。
示例
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