6MoreaboutFunctions.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6MoreaboutFunctions

Lua中的函数是带有词法定界(lexical scoping)的第一类值(first-class values). ?????? 第一类值指:在Lua中函数和其他值(数值,字符串)一样,函数可以被存放在变量中,也可以存放在表中,可以作为函数的参数,还可以作为函数的返回值. ?????? 词法定界指:被嵌套的函数可以访问他外部函数中的变量.这一特性给Lua提供了强大的编程能力. ?????? Lua中关于函数稍微难以理解的是函数也可以没有名字,匿名的.当我们提到函数名(比如print),实际上是说一个指向函数的变量,像持有其他类型值的变量一样 ????????????? a = {p = print} ??? ?????? a.p(Hello World) -- Hello World ??? ?????? print = math.sin? -- `print now refers to the sine function ??? ?????? a.p(print(1))???? -- 0.841470 ??? ?????? sin = a.p???????? -- `sin now refers to the print function ??? ?????? sin(10, 20)?????? -- 10????? 20 ?????? 既然函数是值,那么表达式也可以创建函数了,Lua中我们经常这样写: ????????????? function foo (x) return 2*x end ?????? 这实际上是利用Lua提供的语法上的甜头(syntactic sugar)的结果,下面是原本的函数: ????????????? foo = function (x) return 2*x end ?????? 函数定义实际上是一个赋值语句,将类型为function的变量赋给一个变量.我们使用function (x) ... end 来定义一个函数和使用{}创建一个表一样. ?????? table标准库提供一个排序函数,接受一个表作为输入参数并且排序表中的元素.这个函数必须能够对不同类型的值(字符串或者数值)按升序或者降序进行排序.Lua不是尽可能多地提供参数来满足这些情况的需要,而是接受一个排序函数作为参数(类似C++的函数对象),排序函数接受两个排序元素作为输入参数,并且返回两者的大小关系,例如: ????????????? network = { ??? ?????? ???{name = grauna,? IP = 210.26.30.34}, ??? ?????? ???{name = arraial, IP = 210.26.30.23}, ??? ?????? ???{name = lua,???? IP = 210.26.23.12}, ??? ?????? ???{name = derain,? IP = 210.26.23.20}, ??? ?????? ?} ?????? 如果我们想通过表的name域排序: ????????????? table.sort(network, function (a,b) ????? ?????????? return (a.name b.name) ??? ?????? end) ?????? 以其他函数作为参数的函数在Lua中被称作高级函数,高级函数在Lua中并没有特权,只是Lua把函数当作第一类函数处理的一个简单的结果. 下面给出一个绘图函数的例子: ????????????? function eraseTerminal ()??????????????????????????????????? ????????????? io.write(\27[2J)???????????????????????????????????? ??????????? end???????????????????????????????????????? ????????????? ???????????????????????????????????????????????????????????? ??????????? -- writes an `* at column `x , row `y???????????????? ??????????? function mark (x,y)????????????????????????????????????? ????????????? io.write(string.format(\27[%d;%dH*, y, x))?????????? ??????????? end??????????????????

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档