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
廣告