小编Ran*_*aul的帖子

Lua:lua_resume和lua_yield参数的目的

将参数传递给lua_resume和lua_yield的目的是什么?

据我所知,在第一次调用lua_resume时,参数被传递给正在恢复的lua函数.这是有道理的.但是我希望对lua_resume的所有后续调用都会"更新"协程函数中的参数.然而事实并非如此.

将参数传递给lua_resume以使lua_yield返回的目的是什么?在协程下运行的lua函数是否可以访问lua_resume传递的参数?

lua arguments coroutine

6
推荐指数
2
解决办法
1459
查看次数

修改Lua Chunk环境:Lua 5.2

据我了解,在Lua 5.2中,环境存储在名为的升值中_ENV。这使我在运行之前但在加载之后修改块的环境确实使我感到困惑。

我想加载具有某些功能的文件,并使用块将这些功能注入各种环境。例:

chunk = loadfile( "file" )

-- Inject chunk's definitions
chunk._ENV = someTable -- imaginary syntax
chunk( )

chunk._ENV = someOtherTable
chunk( )
Run Code Online (Sandbox Code Playgroud)

在Lua内部可能吗?我可以找到的唯一修改此升值的示例是C apiC api的另一个示例),但是我试图在Lua内部进行此操作。这可能吗?

编辑:我不确定使用调试库接受答案。的文档状态,该功能可以是缓慢的。我这样做是为了提高效率,这样就不必为了将变量定义注入到各种环境中而从字符串(或文件,甚至更糟)中解析整个块。

编辑:看起来这是不可能的:在Lua 5.2中重新创建setfenv()

编辑:我想对我来说最好的方法是绑定可以修改环境的C函数。尽管这是一种更烦人的解决方法。

编辑:我相信更自然的方法是将所有块加载到单独的环境中。通过设置引用块的全局副本的元表,这些可以被任何其他环境“继承”。加载后不需要任何升值修改,但仍允许使用这些函数定义的多个环境。

lua

2
推荐指数
1
解决办法
1173
查看次数

标签 统计

lua ×2

arguments ×1

coroutine ×1