Lua中的函数代码实例_Lua

在lua中,函数是一种“第一类值”,它们具有特定的词法域。

第一类值:表示在lua中,函数与其他传统类型的值(数字和字符串)具有相同的权利,函数可以存储到变量中(无论全局变量还是局部变量)或者是table中,可以作为实参传递给其他函数,还可以作为其他函数的返回值。

词法域:是指一个函数可以嵌套在另一个函数中。内部的函数可以访问外部函数中的变量。
看例子代码:

复制代码 代码如下:

do 
     function foo(a, b, c) 
        print(a, b, c); 
     end 
 
     local c = foo; 
     c(2, 3, 4); 
 
end 

输出的结果是:2, 3, 4

例子:

复制代码 代码如下:

do 
    function derivative(f, delta) 
        delta = delta or 0.01 
        print("delta: ", delta); 
        return function (x) 
                    return (f(x + delta) - f(x)) / delta 
                end 
    end 
    local c = derivative(math.sin) 
    print(math.cos(10), c(10)) 
end 

在上面的例子中,

复制代码 代码如下:

c = function(x) return (math.sin(x + 0.1) -math.sin(x))  / 0.01 

因为:

复制代码 代码如下:

local c = derivative(math.sin)

将:

复制代码 代码如下:

f = math.sin 

时间: 2024-09-01 14:57:09

Lua中的函数代码实例_Lua的相关文章

Lua中对table排序实例_Lua

lua中利用到的排序的基本上就是构造函数(table)了,为了便于和C区分开来,我俗称它为表单. 实例:(原理就是LUA集成的冒泡算法) 排序的一般姿势(对于只包含数字或者只包含字符串的简单数组) 复制代码 代码如下: table.sort(test) 扩展版 复制代码 代码如下: table.sort(test, function(a,b) return a.id<b.id end ) 实例一:值排序 1.数组模式 复制代码 代码如下: local test0 ={1,9,2,8,3,7,4,

Lua常用时间函数使用实例_Lua

-- 获取当前的格林尼治时间 print(os.time()) -- 获取当前时间的字符串表示,形如:11/28/08 10:28:37 print(os.date()) -- 获取当前日期的字符串表示,形如:11/28/08 print(os.date("%x", os.time())) -- 获取当前时间的字符串表示,形如:10:28:37 print(os.date("%X", os.time())) -- 获取当前时间的字符串表示,形如:10/10/13 1

Lua中数字for循环实例_Lua

看以下代码: 复制代码 代码如下: for i=1,2 do    print(i)    i=3  end  输出是什么?如果习惯了C/C++语言,会觉得因为改变了控制变量i为3,所以在执行第二次循环体之前判断不通过,所以输出是1. 但结果输出是1和2,即虽然改变了i,但循环还是执行了2次.这是为什么呢? 看了lua的源代码,发现在语法分析阶段,表达式中的i(也叫控制变量)和循环体中的i并不是一个值,其实表达式中的i叫internal index,循环体中的i叫external index.

Lua中的递归函数写法实例_Lua

先看例子吧: 复制代码 代码如下: function foo(i) --1      print("i: ", i)      return i  end    do    --local foo; --2   local foo = function (i) --3      if i < 1 then          return 1      else          return i * foo(i - 1) --4      end   end     local

Lua中的函数(function)、可变参数、局部函数、尾递归优化等实例讲解_Lua

一.函数 在Lua中,函数是作为"第一类值"(First-Class Value),这表示函数可以存储在变量中,可以通过参数传递给其他函数,或者作为函数的返回值(类比C/C++中的函数指针),这种特性使Lua具有极大的灵活性.   Lua对函数式编程提供了良好的支持,可以支持嵌套函数.   另外,Lua既可以调用Lua编写的函数,还可以调用C语言编写的函数(Lua所有的标准库都是C语言写的).   定义一个函数 复制代码 代码如下: function hello() print('he

Lua中的函数精讲笔记_Lua

函数的用途: 1.完成指定的任务,这种情况下作为调用语句使用. 2.计算并返回值,这种情况下,函数作为赋值语句的表达式使用. 函数的参数为空,必须使用()表示函数调用.例外:当函数只有一个参数,并且这个参数是字符串或表构造时,()是可选的. lua提供了面向对象调用函数的语法 o:foo(x)与o.f(o,x)是等价的. lua函数的实参与形参的匹配与赋值语句类似,多余部分被忽略,缺少部分nil补足. lua函数可以返回多个值,return后列出要返回值的列表即可返回多值 复制代码 代码如下:

Lua中的函数写法简明示例

  这篇文章主要介绍了Lua中的函数写法简明示例,本文是一篇个人学习笔记,简单的记录了Lua函数的写法,需要的朋友可以参考下 函数定义:用关键字function定义函数,以关键字end结束 局部变量:用关键字local定义.如果没有用local定义,即使在函数内部定义定义的变量也是全局变量! 函数可以有多个返回值:return a,b,c... 平行赋值:a,b=c,d 全局变量:前面的代码定义了三个全局变量:foo,r1,r2 这是我写的第一个Lua函数: 复制代码 代码如下: functio

JavaScript中匿名函数用法实例

 这篇文章主要介绍了JavaScript中匿名函数用法,实例分析了javascript中匿名函数的功能.定义及具体用法,需要的朋友可以参考下     本文实例讲述了JavaScript中匿名函数用法.分享给大家供大家参考.具体分析如下: JS中可以不用给函数名称,而是在使用时直接通过function把函数体赋值给相关的事件或者变量. 下面的JS代码给按钮设定了一个onclick事件,使用了匿名函数 ? 1 2 3 4 5 6 7 8 9 <form action="#">

Lua中的闭包学习笔记_Lua

之前介绍 Lua 的数据类型时,也提到过,Lua 的函数是一种"第一类值(First-Class Value)".它可以: 存储在变量或 table (例如模块和面向对象的实现)里 复制代码 代码如下: t = { p = print } t.p("just a test!") 作为实参(也称其为"高阶函数(higher-order function)")传递给其他函数调用 复制代码 代码如下: t = {2, 3, 1, 5, 4} table