Lua/输出

维基教科书,自由的教学读本
< Lua

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。