lua程序设计第9章闭包用法与练习题答案

本文详细探讨了Lua中的闭包概念,包括其定义、用法及在沙盒环境中的应用。文章指出,闭包使得函数能够访问非局部变量,即使在其创建的环境已经消失后。此外,还解析了闭包在解决变量作用域问题上的关键作用,以及如何通过闭包实现柯里化功能。最后,文章提供了几个关于闭包的练习题及其答案,帮助读者巩固理解和实践。
摘要由CSDN通过智能技术生成

lua语言中的函数是第一类值

a = {p = print}
a.p("Hello world") --> Hello world
print = math.sin -> 'print'现在指向sin函数
a.p(print(1)) -->0.8414709848079

function foo(x) return 2 * x end    <--> foo = function(x) return 2*x end

在lua中所有的函数都是匿名的
比如print,实际上指的是保存该函数的变量

定义局部函数:

local function f()
	body
end    

local function foo(params)body end <-->local foo; 
foo = function(params)body end

这是一种语法糖

前向声明,类似c++
如:

local f --前向声明


local function g()
	some code f() some code
end

function f()
	some code g() some code
end


词法定界:
当函数A被包含于函数B时,A能够访问B的所有局部变量,这种特性叫做词法词法定界

function sortbygrade(names, grades)
	table.sort(names,function(n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值