基本类型
Lua 类型
如需了解更多信息和教程,请参阅 Lua 官方文档。
number
数字类型表示实数(双精度浮点数)。 Lua 没有整型,因为不需要。 关于浮点数运算错误存在一种普遍的误解,有些人担心即使是简单的递增在浮点数下也会变得很奇怪。 事实是,当你使用双精度浮点数来表示整数时,根本不存在四舍五入的误差(除非该数字大于 100,000,000,000,000)。 具体来说,Lua 的数字可以表示任何长整数而不会产生舍入问题。 此外,大多数现代 CPU 进行浮点运算的速度与进行整数运算一样快(甚至更快)。
string
字符串具有通常的含义:字符序列。 Lua 是 8 位无损的,因此字符串可以包含任意数值的字符,包括嵌入的零值。 这意味着你可以将任何二进制数据存储到字符串中。 Lua 中的字符串是不可变的值。 你不能像在 C 语言中那样修改字符串内部的某个字符;相反,你需要根据所需的修改来创建一个全新的字符串,如下面的示例所示:
function
函数在 Lua 中是一等的值。 这意味着函数可以存储在变量中,作为参数传递给其他函数,也可以作为结果返回。 这些特性赋予了该语言极大的灵活性:程序可以重新定义一个函数以添加新功能,或者在运行一段不可信的代码(例如通过网络接收的代码)时,只需擦除某个函数即可创建一个安全的运行环境。 此外,Lua 对函数式编程提供了良好的支持,包括具有正确词法作用域的嵌套函数。 最后,一等函数在 Lua 的面向对象特性中起着至关重要的作用。
boolean
布尔类型有两个值,false 和 true,代表传统的布尔值。 然而,它们并没有垄断条件值:在 Lua 中,任何值都可以表示条件。 条件判断(例如控制结构中的条件判断)将 false 和 nil 视为 false,将其他任何内容都视为 true。 请注意,与其他某些脚本语言不同,Lua 在条件测试中将数字零和空字符串都视为 true。
nil
Nil 是一种只有单个值(即 nil)的类型,其主要属性是与任何其他值都不同。 正如我们所见,全局变量在第一次赋值之前默认具有 nil 值,你可以将 nil 赋值给全局变量来删除它。 Lua 将 nil 用作一种非值,来表示缺乏有用的值。
table
表类型实现了关联数组。 关联数组是一种不仅可以用数字作索引,还可以用字符串或除 nil 以外的任何其他语言值作索引的数组。 此外,表没有固定的大小;你可以动态地向表中添加任意数量的元素。 表是 Lua 中主要的(实际上是唯一的)数据结构机制,而且功能强大。 我们使用表以简单、统一且高效的方式来表示普通数组、符号表、集合、记录、队列和其他数据结构。 Lua 也使用表来表示包。 当我们编写 io.read 时,我们的意思是“io 包中的 read 条目”。 对于 Lua 来说,这意味着“使用字符串‘read’作为键来索引表”。
iterator
迭代器允许你使用 for k, v in ipairs() 来遍历表的元素。
any
我们在本文档中使用 any 来表示可以使用任何类型。
varargs
可变值列表。
数值类型
除了 Lua 类型之外,API 上的某些方法还具有特定的数值类型,这些类型在内部会进行转换并采取不同的处理方式。
integer
不带任何小数部分的整数。
float
带有小数点的浮点型。
特殊类型
SpecialPath
nanos world 在加载纹理(.jpg、.png)、声音(.ogg) 或引用来自 WebUI 的文件时,支持一种特殊类型的路径。 它允许任何包或 WebUI 轻松访问来自其他包或资产包的文件。
SpecialPath 是一个字符串输入,它支持以下访问资产或包文件的格式:
引用资产包文件
assets://[ASSET_PACK_PATH]/[PATH/TO/FILE.jpg]
引用包文件
package://[PACKAGE_PATH]/[PATH/TO/FILE.jpg]
访问来自 quaternius 资产包中的 图像 示例:
assets://quaternius/Thumbnails/SK_Revolver_01.jpg
访问来自 sandbox 包中的 .ogg 声音 示例:
package://sandbox/Client/my_awesome_audio.ogg
访问来自 my-fonts 包中的 .ttf 字体文件 示例:
package://my-fonts/Client/Roboto.ttf
SpecialPath 输入同时也支持相对路径和传统路径!
Steam Avatar
Steam 头像是一个特殊的 URL,可以将 Steam 头像作为图片加载到 WebUI 和控件上。
steam-avatar://player_steam_id
此 URL 可以通过 Player:GetAccountIconURL() 自动获取。