我读到我们可以用两种不同的语法在Lua中声明一个函数:
+---------+------+-----------------+
| user_id | name | skills |
+---------+------+-----------------+
| 1 | Joy | PHP,CSS |
+---------+------+-----------------+
| 2 | Roy | Ruby,Javascript |
+---------+------+-----------------+
| 3 | Tony | Null or empty |
+---------+------+-----------------+
虽然这些功能似乎在它们被调用时的工作原理完全相同但我想知道它们在较低级别的实现之间是否存在差异。解释者是否完全相同或者他们在速度,实施方面或以任何方式不同?
答案 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