在Lua中定义函数

时间:2017-01-08 05:58:36

标签: function lua

我读到我们可以用两种不同的语法在Lua中声明一个函数:

+---------+------+-----------------+
| user_id | name | skills          |
+---------+------+-----------------+
| 1       | Joy  | PHP,CSS         |
+---------+------+-----------------+
| 2       | Roy  | Ruby,Javascript |
+---------+------+-----------------+
| 3       | Tony | Null or empty   |
+---------+------+-----------------+

虽然这些功能似乎在它们被调用时的工作原理完全相同但我想知道它们在较低级别的实现之间是否存在差异。解释者是否完全相同或者他们在速度,实施方面或以任何方式不同?

1 个答案:

答案 0 :(得分:1)

两者之间没有真正的区别。第一种只是第二种形式的语法糖。

参考手册Function Definitions

  

函数定义的语法是

  functiondef ::= function funcbody
  funcbody ::= ‘(’ [parlist] ‘)’ block end
     

以下语法糖简化了函数定义:

  stat ::= function funcname funcbody
  stat ::= local function Name funcbody
  funcname ::= Name {‘.’ Name} [‘:’ Name]
     

声明

  function f () body end
     

转换为

  f = function () body end