概述
LuaValue
所有的Lua数据类型的操作都是围绕着LuaValue
组织起来的,LuaValue
暴露了用于Lua计算的主要接口。
LuaValue
对象用来表示Lua中的基本数据类型,比如:nil
,number
,string
,table
,userdata
,function
等。需要注意LuaValue
也表示了Lua语言中的函数。所以Luaj中Lua语言的函数操作都是通过LuaValue来实现的。
Globals
旧的platform
的概念已经被globals
所取代。Globals
类有执行闭包所需要的所有状态,并且为编译和加载脚本提供了方便的函数。
Globals
继承自LuaTable
,而LuaTable
继承自LuaValue
,``
LuaTable
Lua中table
如果用作数组的话,索引是从1开始的,这点需要额外注意。在Java中赋值时如果以0作为索引的起始值,那么在Lua中使用#table
这种方式获取到的长度则为数组长度-1。
线程安全
Luaj3.0可以多线程运行,但是有以下限制:
- 客户端代码生成的每个线程都必须有他自己的、不同的
Globals
实例。 - 每个线程都不可以访问其他线程的
Globals
实例(全局变量)。 - 数字、字符串、线程、函数、布尔值和和
Nil
的元数据都是共享的,因此在任何线程中运行Lua代码时时都不应该进行修改。
作为一种替代方法,可以使用JSR-223脚本接口,并且应该通过在内部使用ThreadLocal为每个脚本引擎实例提供一个单独的Globals
实例。
Luaj
直到代码运行结束前都会阻塞线程,这时候开启一个新的线程专门运行即可,但是LuaJ运行以后无法中断(即使你中断了它所在的线程),比如你的.lua中有一个while true do end循环,那么你将永远无法中断它,除非退出你的整个Java应用。(此段copy,未经试验)
参考资料
- 《从零开始搭建游戏服务器》Java与Lua互相调用
最后
以上就是淡定板凳为你收集整理的Luaj-04-重点概念与数据类型的全部内容,希望文章能够帮你解决Luaj-04-重点概念与数据类型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复