zoukankan      html  css  js  c++  java
  • Lua程序设计(4th) 第二部分 编程实操

    第9章 闭包

        在Lua语言中,函数是严格遵循词法定界(可以访问包含其自身的外部函数中的变量)的第一类值(如数值和字符串)。

        在 Lua 语言中,所有的函数都是匿名的。函数名实际上指的是保存该函数的变量。像函数 table.sort 这样以另一个函数为参数的函数,称为高阶函数。 

    local fact1 = function(n)
        if n == 0 then return 1
        else return n * fact1(n - 1) --attempt to call a nil value (global 'fact1')
        end
    end
    
    local fact2
    fact2 = function(n)
        if n == 0 then return 1
        else return n * fact2(n - 1) --OK
        end
    end
    
    local function fact3(n) --会被展开成fact2的形式
        if n == 0 then return 1
        else return n * fact3(n - 1) --OK
        end
    end
    local f
    
    local function g ()
        print("call g")
        f()
    end
    
    function f () --不能定义为local,否则将定义一个新的f,从而使前面的f变成为定义的状态
        print("call f")
    end
    
    g()
  • 相关阅读:
    Z算法
    CodeForces 939F
    CodeForces 15D
    ZOJ 3408
    CodeForces 962D
    CodeForces 29D
    CodeForces 1129C
    RabbitMQ.NET In Window Service
    封装RabbitMQ.NET Library 的一点经验总结 转载
    DotNetBar 使用笔记
  • 原文地址:https://www.cnblogs.com/yyqng/p/14427604.html
Copyright © 2011-2022 走看看