Lua的基礎內容及基本的調試方法,就是將一些數據輸出到控制台上。也就是說,在控制台上顯示輸出的內容。「輸出」與「返回」不同。

輸出方法

編輯

Lua主要有腳本式和交互式兩種輸出方法。

腳本式

編輯

在Lua中使用print(要輸出的內容)(「print」函數)可以將數據的內容輸出到控制台上。通常使用的腳本式編程。腳本式編程的意思是完成一個完整的文件,然後顯示打印(不是打印機的打印)的內容。

print()函數的用法
原始碼 輸出的內容
print(3) 3
print(x) nil
print({"a","b","c"}) table: 0x20ec8c0
(注意:這裏的後面一串數字通常是隨機生成的。舊版本的Lua只會輸出table。)
print(function() return "p" end) function: 0x2137bf0
(注意:這裏的後面一串數字通常是隨機生成的。舊版本的Lua只會輸出function。)
print("字符串") 字符串
print(setmetatable({},{__tostring=function() return "字符串" end}))
(註:該代碼比較複雜,涉及Lua/元表,若無法讀懂可忽略。)
字符串

交互式

編輯

交互式編程,指的是輸入一行就立即執行一行並返回結果。通常,輸入的內容自動有>前綴,而輸出的內容沒有。

交互式編程中,要使返回的值打印在屏幕上[註 1],有以下三種方法:

  1. 使用print函數,這種方法比較自由,且可以用於代碼塊中。
    >for i=1,3 do
    >>print(i)
    >end
    1
    2
    3
    
  2. 以等號(=)開頭,後面接表達式。這種方法比較簡便。它會顯示表達式返回的值。注意,表達式不能是代碼塊。
    >a=5
    >=a
    5
    
    這種方法往往比print函數簡便,但是只適用於交互式編程。你每輸入一行,它就可以返回一行。你也可以利用交互式編程進行高效的練習或調試。
    >=t
    nil
    >t=2
    >=t
    2
    
  3. 不以等號開頭,直接寫表達式[註 2]。需要注意的是,函數調用也可以視為表達式,雖然它是進行一個操作,但仍然很有可能返回值。print函數是不會返回值的。雖然table.insert、setmetatable等函數一般單獨使用,但對於交互式中,如果只有這個表達式,它仍然返回值,因此也會將值顯示在屏幕上。
    >a
    nil
    >a={}
    >a
    table: 0x20ec8c0
    >setmetatable(a,{})
    table: 0x20ec8c0
    

註釋

編輯
  1. Lua中,「打印」只是以某種方式顯示輸出的值,與紙和打印機無關
  2. 這種方法僅適用於較新版本的Lua。