• Lua笔记(2)


    函数高级特性

    像新版c++一样,lua支持lambda表达式。也就是可以在函数内部声明函数。内层的函数可以访问外一层函数的局部变量。

    一个函数以及它会访问到的外层函数的变量,称为闭包。这些变量又被称为upvalue。

    实际上普通函数也是一种特殊的closure(没有要访问的外层变量)。

    执行不受信任的代码时,需要一个安全的运行环境,称为“沙盒”。例如,沙盒会把文件的读写重定向到安全的地方,或干脆限制某些文件的读写。

    递归函数的调用


    local fact
    fact = function(n)
      if n == 0 then return 1
      else return n*fact(n-1)
      end
    end

    注意由于函数递归,需要先定义fact为一个局部变量。否则运行时找不到函数内部定义的局部变量fact。


    若一个函数最后(在返回前)调用了另外一个函数,就称为尾调用。Lua的尾调用可以先清除调用函数的栈,再进入被调用函数的栈。这样就不会导致栈溢出的问题。

  • 相关阅读:
    文件操作
    set集合,深浅拷贝
    is 和 == 区别 id()函数
    字典
    列表
    基本数据类型
    第十二章 if测试和语法规则
    第十一章 赋值、表达式和打印
    第十章 python语句简介
    第九章元组、文件及其他
  • 原文地址:https://www.cnblogs.com/dydx/p/4222499.html
Copyright © 2020-2023  润新知