第一版是针对 Lua 5.0 编写的。虽然在很大程度上仍然适用于后续版本,但也存在一些差异。
第四版针对 Lua 5.3,可在 Amazon 和其他书店购买。
购买本书,您还将帮助 支持 Lua 项目


2 – 类型和值

Lua 是一种动态类型语言。该语言中没有类型定义;每个值都带有自己的类型。

Lua 中有八种基本类型:nilbooleannumberstringuserdatafunctionthreadtabletype 函数给出给定值的类型名称

    print(type("Hello world"))  --> string
    print(type(10.4*3))         --> number
    print(type(print))          --> function
    print(type(type))           --> function
    print(type(true))           --> boolean
    print(type(nil))            --> nil
    print(type(type(X)))        --> string
无论 X 的值是什么,最后一个示例都将生成 "string",因为 type 的结果始终是一个字符串。

变量没有预定义的类型;任何变量都可以包含任何类型的值

    print(type(a))   --> nil   (`a' is not initialized)
    a = 10
    print(type(a))   --> number
    a = "a string!!"
    print(type(a))   --> string
    a = print        -- yes, this is valid!
    a(type(a))       --> function
注意最后两行:函数是 Lua 中的一等值;因此,我们可以像处理任何其他值一样处理它们。(有关更多信息,请参见 第 6 章。)

通常,当您对不同类型使用单个变量时,结果是混乱的代码。但是,有时明智地使用此功能会有所帮助,例如在使用 nil 区分正常返回值和异常条件时。