我是靠谱客的博主 淡定板凳,最近开发中收集的这篇文章主要介绍Luaj-04-重点概念与数据类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

LuaValue

所有的Lua数据类型的操作都是围绕着LuaValue组织起来的,LuaValue暴露了用于Lua计算的主要接口。

LuaValue对象用来表示Lua中的基本数据类型,比如:nilnumberstringtableuserdatafunction等。需要注意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-重点概念与数据类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部