`

lua值与类型

 
阅读更多
Lua 中有八种基本类型: nil, boolean, number, string, function, userdata, thread, and table.
Nil 类型只有一种值 nil ,它的主要用途用于标表识和别的任何值的差异

Boolean 类型只有两种值:false 和 true。 nil 和 false 都能导致条件为假

userdata 类型用来将任意 C 数据保存在 Lua 变量中。 这个类型相当于一块原生的内存,除了赋值和相同性判断,Lua 没有为之预定义任何操作。 然而,通过使用 metatable (元表) ,程序员可以为 userdata 自定义一组操作.userdata 不能在 Lua 中创建出来,也不能在 Lua 中修改。这样的操作只能通过 C API。 这一点保证了宿主程序完全掌管其中的数据。

thread 类型用来区别独立的执行线程,它被用来实现 coroutine (协同例程).不要把 Lua 线程跟操作系统的线程搞混。 Lua 可以在所有的系统上提供对 coroutine 的支持,即使系统并不支持线程。

table 类型实现了一个关联数组。也就是说, 数组可以用任何东西(除了nil)做索引,而不限于数字。 table 可以以不同类型的值构成;它可以包含所有的类型的值(除 nil 外)。 table 是 lua 中唯一的一种数据结构;它可以用来描述原始的数组、符号表、集合、 记录、图、树、等等。 用于表述记录时,lua 使用域名作为索引。 语言本身采用一种语法糖,支持以 a.name 的形式表示 a["name"]。

跟索引一样, table 每个域中的值也可以是任何类型(除 nil外)。 特别的,因为函数本身也是值,所以 table 的域中也可以放函数。 这样 table 中就可以有一些 methods 了

print(type(a))
a = 10
print(type(a))
print("\n")
a = true
print(type(a))
print(type(print))
c = 123
print(c)
d = string.format(c)
print(d)

nil
number


boolean
function
123
123
分享到:
评论

相关推荐

    易语言LUA支持库1.0#0版(第三方)

    包含 LUA取参数数目、LUA取参数类型、LUA取参数值、LUA加返回值、LUA扩展栈。后续版本可能会根据需要进行适当的扩充。LUA(数据类型)。LUA虚拟机,提供对LUA代码进行编译/解释执行的功能。LUA类库常量(常量)。LUA...

    lua与Android交互,基本实现

    在Java中,Lua值可以通过LuaState的API转换为Java对象,反之亦然。例如,从Lua传递一个表到Java: ```lua local table = {key1="value1", key2="value2"} android.someMethod(table) ``` 在Java端接收: ```java ...

    Lua的最基本使用 C++与lua的互相调用

    5. 传递数据:C++与Lua之间可以传递不同类型的数据。使用`lua_pushnumber`、`lua_pushstring`等函数将C++数据推送到Lua栈,使用`lua_tonumber`、`lua_tostring`等函数从Lua栈获取数据。 6. 清理:调用`lua_settop(L...

    Lua判断数据类型的方法

    3. 布尔(boolean):布尔类型是Lua提供的一个简单的类型,它只有两个可能的值:"true"和"false"。在Lua中,只有false和nil被视为false,其他的值,包括0和空字符串都被视为true。 4. 函数(function):函数在Lua中是...

    Lua 5.2 Reference Manual(Lua 5.2引用指南)

    - **Function**: 函数是 Lua 中的一种值类型,可以像其他值一样被赋值给变量、作为参数传递、作为返回值返回。 - **Userdata**: 用户数据类型用于将 C 语言的数据结构封装成 Lua 可访问的形式。 - **Thread**: 线程...

    Lua与C交互示例

    5. **lua_gettop() / lua_push*() / lua_to*()**:在C代码中获取和设置Lua栈上的值。`lua_gettop()`用于获取栈顶索引,`lua_push*()`系列函数用于将C数据推入栈,`lua_to*()`系列函数用于从栈中取出数据。 二、Lua...

    Lua_C 实现Lua与C API互调

    8. **lua_to*()**系列函数(如lua_tointeger(), lua_tostring()等):将栈上的值转换为C类型。 9. **lua_push*()**系列函数:将C类型的数据推送到Lua栈上,以便作为参数传递或作为返回值。 以上是Lua与C API互调的...

    lua与c交互学习

    其中`lua_CFunction`定义了Lua中函数指针的类型,接受一个`lua_State`类型的参数,并返回一个整数值。这是Lua与C交互的一个基本点,开发者需要按照这个约定来编写C函数。 **3.2 错误处理** 由于Lua中的函数是在C中...

    lua_c_lua_c

    4. **数据类型转换**: Lua和C的数据类型不同,所以需要使用`lua_tonumber`、`lua_tostring`等函数将Lua值转换为C类型,反之亦然。 5. **错误处理**: 在C与Lua交互时,理解并处理错误至关重要。`lua_gettop`、`lua_...

    lua proto 解决int64 解析

    在Unity3D环境中,可以将这些库集成到项目中,通过C#接口与Lua交互。 2. 自定义编码解码:如果你不想依赖外部库,也可以自行编写解码和编码函数。对于int64,可以将其转换为字符串,然后在Lua中进行处理。例如,你...

    lua教程--轻松学习lua

    数据类型包括数字、字符串、布尔值、nil以及表。控制结构如if语句、while和for循环等,与大多数编程语言相似,但更简洁。函数是第一类对象,可以作为参数传递,也可以作为返回值。表是Lua的通用数据结构,可以用来...

    lua api lua文档

    #### 三、类型与值 - **Nil**:表示空值,常用于表示不存在的数据。 - **Booleans**:布尔类型,有两个可能的值:`true` 和 `false`。 - **Numbers**:数值类型,包括整数和浮点数。 - **Strings**:字符串类型,...

    Lua 5.3 参考手册.pdf

    - `table`: 关联数组,支持使用除`nil`和`NaN`之外的所有Lua值作为索引。 - **数值类型**: 数值类型有两种内部表现形式,即整数和浮点数。Lua的标准实现使用64位整数和双精度浮点数,但可以配置为使用32位整数和单...

    lua与oc的demo交互

    LuaBridge提供了一套自动转换机制,能够将Lua的值(如数字、字符串、表格等)转换为Objective-C的对象,反之亦然。 4. **对象封装**: 对象在Lua和Objective-C之间的传递需要特别处理。LuaBridge允许创建Lua的“ ...

    C++控制台与Lua交互,打开浏览器网页

    例如,`lua_pcall()`函数用于执行已加载的脚本,如果发生错误,它会返回非零值。 8. **关闭Lua状态机**:当不再需要与Lua交互时,记得通过`lua_close(L)`释放资源。 以上就是C++与Lua交互的基本流程。在实际项目中...

    LuaAction C++访问LUA函数

    《LuaAction:C++与Lua交互的高效实践》 在软件开发中,有时我们需要将脚本语言如Lua与系统级编程语言如C++相结合,以实现动态行为和高性能计算的结合。在这种场景下,LuaAction提供了一种高效的方法,允许C++代码...

    json转lua-table工具

    2. JSON没有内建的true/false值,它们在Lua中对应于boolean类型的true/false。 3. JSON的null值在Lua中通常转换为nil。 使用这个脚本,开发者可以将JSON格式的配置文件或网络请求响应转换为可以直接在Lua环境中使用...

    lua 帮助文档 lua

    3. **数据类型**:Lua有七种基本数据类型:nil、boolean(真和假)、number(浮点数和整数)、string(字符串)、table、function以及 userdata(用于与C语言交互的用户数据)。 4. **控制结构**:Lua的控制结构...

    lua-pb解析

    3. **解析和序列化**: Lua代码可以通过这些生成的模块创建protobuf消息对象,设置字段值,然后序列化成二进制数据。反之,也可以从接收到的二进制数据反序列化成Lua对象。 4. **兼容性**: lua-pb库通常会努力保持与...

Global site tag (gtag.js) - Google Analytics