Lua中匿名函数的类型是什么?

Nik*_*eng 2 lua

在Lua参考手册中,它说每个值都有一个类型,可能是本地,全局,表字段类型之一.我的问题是Lua中匿名函数的类型是什么?匿名函数有什么生命周期?我只是举个例子.

local co = coroutine.create( function () print "hi" end )

print(coroutine.status(co))
Run Code Online (Sandbox Code Playgroud)

Pau*_*nko 5

我认为这里有一些概念.正如其他人已经说过的,Lua只有匿名函数,它们有type function(type(function() end) == 'function').这些匿名函数可以分配给变量,然后可以用来调用函数; 这些方便地用作函数的"名称",但它们实际上是存储"函数"类型值的变量的名称.

就其生命周期而言,它们与任何其他变量没有区别:如果该函数不再可达,则在某些时候将对其进行垃圾回收.例如,此块内的函数do local func = function() end end无法从块外部访问,将被收集.

您显示的示例创建一个协程,它接受一个函数并创建一个类型为的值thread:type(coroutine.create(function() end)) == "thread".这些协同程序可能处于不同的状态,它们的状态由coroutine.status函数返回; 在你的情况下,它将被"暂停".