为了账号安全,请及时绑定邮箱和手机立即绑定

LUA脚本的几个疑问?

LUA脚本的几个疑问?

哆啦的时光机 2018-10-11 11:03:50
如何用dostring来运行lua文件用dostring来运行一个有返回值的函数,如何获取返回值听说lua执行函数是单线程,而且执行一个带参的函数需要自己清理堆栈为什么绑定的c++函数,只能接收一个参数,而且必须是一个int返回值.如:int Show_Msg(LuaState* state)关于dofile:对于dofile是不是读取一个文件的所有指令,然后每条都会去执行dotring.如果不是,用两个线程,调用同样的带返回值的函数.一个是调用dostring一个dofilre调用文件(文件内也是同样的指令)那么长时间执行后,两方数据是否会被破坏?还有两点忘了写lua默认为全局变量那么 形参和返回值是临时的还是全局的呢?funciton Msg(x,y)a=x+yreturn aend其中的 x,y,a是全局的还是临时的
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

a = dostring.....

dostring最后一个返回值,就是准备给a的。
c++绑定函数返回时,它只能且必须返回一个值,这个值通知Lua,我返回了几个值在堆栈里。你不返回这个值的话,难道让Lua去猜你会返回几个值?你这里设了返回值个数后,Lua才会给你分配保留适当的空间,不然你返回后,之前放的返回值就丢了。

dofile和dostring一样,会先获取源文件或字符串内容,然后编译,再逐条执行代码。
你说的多线程,我不明白你的意思,就不说了。

最后那个x和y当然是临时的,而那个a,是全局的了。

Lua5.2和之前的版本不一样了,“全局”不是真正的全局,而是当前环境的全局,仔细去看看Lua5.2的官方文档。



查看完整回答
反对 回复 2018-11-16
  • 1 回答
  • 0 关注
  • 689 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信