Lua中的函数定义

时间:2015-07-24 07:42:55

标签: lua

之间有什么区别吗?
local splitPathFileExtension = function (res)
end

function splitPathFileExtension(res)
end

?我理解在第一种情况下这个函数是匿名的,但这是唯一的区别吗?

2 个答案:

答案 0 :(得分:5)

它们几乎完全相同(除了你将第一个函数指定为local而不指定第二个函数的事实。)

请参阅有关函数定义的manual

  

声明

    function f () body end
     

对应

    f = function () body end
     

声明

    function t.a.b.c.f () body end
     

转换为

    t.a.b.c.f = function () body end
     

声明

    local function f () body end
     

转换为

    local f; f = function () body end
     

不要

    local f = function () body end
     

(当函数体包含对f的引用时,这只会有所不同。)

答案 1 :(得分:4)

所有函数都是匿名的,它们没有名称。函数定义实际上是一个赋值语句,它创建一个function类型的值并将其赋值给变量。

第二个代码是语法糖,相当于:

splitPathFileExtension = function (res) end

因此,除了第一个是本地的,而第二个是全局的,两种函数定义方式之间没有区别。