第6章名词解释

目录

第一类值(First-Class Value)

词法域(Lexical Scoping)

高阶函数(higher-order function)

非局部的变量(non-local variable):由于一些历史原因,在Lua中“非局部的变量”也称为upvalue

闭合函数(closure)和函数之间的关系

正确的尾调用(proper tail call)


第一类值(First-Class Value)

  • 词法域(Lexical Scoping)

  • 高阶函数(higher-order function)

像table.sort这样的函数,接受另一个函数作为实参的,称其是一个“高阶函数”

  • 非局部的变量(non-local variable):由于一些历史原因,在Lua中“非局部的变量”也称为upvalue

那么下面给出两个例子,比较upvalue和局部变量,前者是 upvalue,后者是函数的局部变量,所以声明一次便产生一个闭合和一个新的局部变量i

图1

图2

  • 闭合函数(closure)和函数之间的关系

原文:Thchnically speaking, what is a value in Lua is the closure, not the function.The function itself is just a prototype for closures.

结合前面讲过的upvalue和局部变量的区别,那么下面的解释迎刃而解。

  • 正确的尾调用(proper tail call)

当一个函数调用是另一个函数的最后一个动作时,该调用才算是一条“尾调用”。只有“return <func>(<args>)”这样的调用形式才算是“尾调用”。由于“尾调用”不会耗费栈空间,所以一个程序可以拥有无数嵌套的“尾调用”。

上述设计的优点以及发散性展开思维思考。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值