自己动手实现Lua(七)Lua方法
我们知道,Lua解释器在执行脚本之前,需要先把脚本装进一个主函数,然后把主函数编译成函数原型,最后交给Lua虚拟机去执行(详见第2章)。函数原型就相当于面向对象语言里的类,其作用是实例化出真正可执行的函数,也就是前面提到的闭包。
函数原型:编译器为我们事先准备好的各种信息:执行函数所需要的寄存器数量、定义函数时声明的固定参数数量以及是否是vararg函数。
例子:
local function max(...) local args = {...} local val, idx ... return val, idx end local function assert(v) if not v then fail() end end local v1 = max(3, 9, 7, 128, 35) assert(v1 == 128)