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
广告
© . All rights reserved.