Lua学习七----------Lua函数】的更多相关文章

© 版权声明:本文为博主原创文章,转载请注明出处 1.Lua函数 - 完成指定的任务,这种情况下函数作为调用语句使用 - 计算并返回值,这种情况下函数作为赋值语句的表达式使用 - Lua函数可以返回多个值 - Lua函数可以接口可变数目的参数 2.function.lua function max(num1, num2) -- 返回两个值的最大值 if(num1 > num2) then return num1 else return num2 end end local num1 = 10 l…
众所周知,Lua是一种强大的脚本语言,并且这种语言是用C语言实现的.为什么要学习这门语言?因为它可以增强我看C语言代码的功底. 我下的Lua版本是Lua5.3,关于Lua5.3的简介如下: http://www.runoob.com/manual/lua53doc/ Lua语言源码发布网站如下:http://www.lua.org/ftp/ 下好了,该怎么编译?打开Makefile,于是看到关键的一行: PLATS= aix bsd c89 freebsd generic linux macos…
1. Lua函数可以接受变长数目的参数,和C语言类似,在函数的参数列表中使用(...)表示函数可以接受变长参数 lua函数将参数存放在一个table中,例如arg,那么#arg可以获得参数的个数 function func_no_p(...) local arg={...} for k,v in pairs(arg} do print(v ..",") end print("输入参数个数:".. #arg) end func_no_p(,,,,"strin…
深入函数 2 非全局的函数 函数是第一类值,函数可以存储到全局变量,局部变量,table 字段中 lua 函数库中的大部分函数存储到 table 字段中 Lib = {} Lib.foo = function (x, y) return x + y end Lib.goo = function (x, y) return x - y end Lib = { foo = function (x, y) return x + y end, goo = function (x, y) return x…
深入函数第一篇 函数是第一类值,具有特定的词法域 第一类值 第一类值的意思是函数与 lua 中的其他类型如数字,字符串具有相同的权力 函数可以存储到全局变量或局部变量变量,还可以存储到 table 中 可作为实参传递给其他函数,也可以作为其他函数的返回值 词法域 定义:一个函数可以嵌套在另一个函数中,内部函数可以访问外部函数定义的局部变量 函数与其他所有的值一样都是匿名的,没有名称 讨论print()函数时,相当于在讨论值仅为 print() 的变量 a = {p = print} a.p("H…
看了上一篇Lua环境搭建具体http://blog.csdn.net/liuwumiyuhuiping/article/details/9196435 为了方便学习. 具体新开始搭建一下学习的小框架. lib存放是 lua编译出来的动态库.Bin存放的是 应用程序 .test存放的就是lua 的测试文件.LuaSrc就是我们的源码了.LuaSrc 里面包含了两个工程一个是Luasrc 和LuaScriptMg . 可以从一下地址下载我配置好的工程.http://download.csdn.net…
在之前的面试遇到考用lua实现类的题目.现在就补补这块知识点. 我们都知道Lua中的table是一个对象.拥有状态,拥有self,拥有独立于创建者和创建地的生命周期. 一个类就是一个创建对象的模具.Lua没有类的概念,但我们可以模拟类. 我们首先看看元表和元方法.这两个东西和我们模拟类有关. Lua 本身是函数式的语言,但借助 metatable (元表)这个强大的工具,Lua 实现操作符重载易如反掌.就像两个表相加,只要我们在元表中写上__add方法就可以实现了. meta={ __add=f…
© 版权声明:本文为博主原创文章,转载请注明出处 Lua迭代器 - 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址 - Lua迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素 泛型for迭代器 - 泛型for的执行过程: 1)初始化,计算in后面表达式的值,表达式应该返回泛型for需要的三个值:迭代函数.状态常量.控制变量:个数不足用nil补充,多余忽略 2)将状态常量和控制变量作为参数调用迭代函数(对于for…
© 版权声明:本文为博主原创文章,转载请注明出处 1.循环类型 1.1 while循环 - 语法:while(condition) do ...<执行语句> end - 解析:判断condition是否为true,为true执行语句,false结束循环 1.2 for循环 1.2.1 数值for循环 - 语法:for var = exp1, exp2, exp3 do ...<执行语句> end - 解析:var从exp到exp2,步长为exp3(可选,默认为1):exp1,exp…
© 版权声明:本文为博主原创文章,转载请注明出处 1.Lua变量 - 变量在使用前,必须在代码中进行声明,即创建该变量 - 编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值 - Lua变量有三种类型:全局变量.局部变量.表中的域 - Lua中的变量全是全局变量,哪怕是语句块或是函数里,除非用local显示声明为局部变量 - 局部变量的作用域从声明位置开始到所在语句块结束. - 变量的默认值为nil 2.赋值语句 - 赋值是改变一个变量的值和改变表域的最基本的方法 -…
© 版权声明:本文为博主原创文章,转载请注明出处 Lua数据类型 - Lua是动态类型语言,不需要为变量定义类型,只需要为变量赋值 - Lua有8中基本数据类型:nil.boolean.number.string.userdata.function.thread.table 1.nil(空) - nil类型表示空指针,相当于java中的null - 将变量或者table表里的变量赋值为nil,表示销毁该变量 1.1 nil.lua print(type(a)) --未声明该变量,nil a =…
© 版权声明:本文为博主原创文章,转载请注明出处 Lua基本语法: 1.--表示单行注释 2.--[[--]]表示多行注释 3.Lua区分大小写 4.Lua中变量默认是全局变量,除非用local显式声明成局部变量 5.nil表示空 6.将变量值赋为nil,表示删除该变量 实例: 1.basicGrammar.lua --输出 print("Hello Lua") --[[ Lua区分大小写 Lua变量默认是全局变量 Lua用local显式声明局部变量 Lua用nil表示空 --]] f…
© 版权声明:本文为博主原创文章,转载请注明出处 1.LUA数组 - 一维数组 - 多维数组 2.array.lua -- 一维数组 print("一维数组") array1 = {"Lua", "Tutorial"} for i = 0, 2 do print(array1[i]) end -- 二维数组 print("二维数组") array2 = {} for i = 0, 3 do array2[i] = {} for…
© 版权声明:本文为博主原创文章,转载请注明出处 1.Lua字符串 - ''单引号间的一串字符 - ""双引号之间的一串字符 - [[]]之间的一串字符 2.Lua转义字符 3.字符串操作 - string.upper(argument):将字符串全部转换成大写 - string.lower(argument):将字符串全部转换成小写 - string.gsub(mainString, findString, replaceString, num):替换字符串 - mainString…
© 版权声明:本文为博主原创文章,转载请注明出处 1.Lua运算符: - 算术运算符:+(加法).-(减法).*(乘法)./(除法-取整).%(除法-取余).^(乘幂).-(负号) - 关系运算符:==(等于).~=(不等于).>(大于).<(小于).>=(大于等于).<=(小于等于) - 逻辑运算符:and(逻辑与).or(逻辑或).not(逻辑非) - 其他运算法:..(连接两个字符串).#(计算字符串或表长度) 1.operators.lua a = 10 b = 4 c =…
© 版权声明:本文为博主原创文章,转载请注明出处 Lua流程控制 - 通过程序设定一个或多个条件语句 - 在条件为true时执行指定程序代码,在条件为false时指定其他指定程序代码 - 控制结构语句:if语句.if...else语句.if嵌套语句 1.if语句 - 语法:if(布尔表达式) then ...<条件为true时执行语句> end 2.if...else语句 - 语法:if(布尔表达式) then ...<条件为true时执行语句> else ...<条件为fa…
DELIMITER // (设置结束符 其实我也不太明白为啥要这样 记住就行把) CREATE FUNCTION ym_date(mydate DATE) (创建函数 函数名字(参数)) ) (指定函数的返回类型) BEGIN (函数开始,如果函数只有一句可以省略bigin和end) RETURN DATE_FORMAT(mydate,%Y-%m); (函数体) END// (函数结束) DELIMITER ; (把结束符再变成;) CREATE FUNCTION show_name_store…
在之前lua学习:lua作配置文件里,我们学会了用lua作配置文件. 其实lua在游戏开发中可以作为一个强大的保存.载入游戏数据的工具. 1.载入游戏数据 比如说,现在我有一份表单: data.xls 用什么工具解析这个Excel文件并将数据载入游戏? 我们可以使用Lua来完成这个工作.不过要先将表单保存为csv文件(数值用逗号隔开的文件). 从表单中,我们可以得知第一行是键名,剩下的行是数值.我们可以用下面的lua函数载入该csv文件并保存到表中. function GetLines(file…
目录 数组操作 字符串操作 在c函数中保存状态 生活总需要一点仪式感,然后慢慢的像那个趋向完美的自己靠近. 数组操作 Lua中的数组就是以特殊的方式使用边.像lua_setttable and lua_gettable这种用来操作的通用函数,也可以用于操作数组,不过C API为使用整数索引的表访问和更新提供了专门的函数: 1 2 void lua_geti (lua_State *L, int index, int key); void lua_seti (lua_State *L, int i…
Lua称为解释型语言的原因:Lua允许在运行源代码之前,先将源代码预编译为一种中间形式.区别解释型语言的主要特征是在于编译器是否是语言运行时库的一部分,即有能力执行动态生成的代码.因为Lua中有dofile函数,才可以将Lua成为一种解释型的语言.        运行Lua代码块有三种形式:      1.dofile 直接编译运行Lua外部代码块,并不返回任何结果.      2.loadfile 编译Lua外部代码块,但不会运行代码,将会以函数的形式返回编译结果.      3.loadst…
函数的定义:在Lua中,函数是一种对语句和表达式进行抽象的主要机制. 一.函数基本用法        在Lua中,      1.函数既可以完成某项特定的任务.(被视为一条语句)      2.也可以只做一些计算并返回结果.(被视为一句表达式) 格式:      function function_name( ... )     -- body     end      ---- 等同于       function_name=function( ... )  --body  end 声明:  …
/* ** basic stack manipulation */ LUA_API int  <strong> (lua_gettop) (lua_State *L);  </strong><pre class="cpp" name="code"></pre><pre class="cpp" name="code">//返回当前堆栈的大小 LUA_API int lu…
在Lua中函数的调用方式和C语言基本相同,如:print("Hello World")和a = add(x, y).唯一的差别是,如果函数只有一个参数,并且该参数的类型为字符串常量或table的构造器,那么圆括号可以省略,如print "Hello World"和f {x = 20, y = 20}.    Lua为面对对象式的调用也提供了一种特殊的语法--冒号操作符.表达式o.foo(o,x)的另一种写法是o:foo(x).冒号操作符使调用o.foo时将o隐含的作…
1.函数定义的格式: Lua使用function定义函数,语法如下: function function_name (arc) --arc表示参数列表,函数的参数列表可以为空 --body end 上面的语法等价于: function_name function_name (arc) --body end_ 上面的方法都是定义了一个全局函数,为了不污染命名空间,同时减少性能损耗,我们应该尽量使用“局部函数”,方法如下(只需要再前面加local声明即可): local function funct…
Lua 之Module介绍 包管理库提供了从 Lua 中加载模块的基础库. 只有一个导出函数直接放在全局环境中: [require]. 所有其它的部分都导出在表 package 中. require (modname) 加载一个模块. 这个函数首先查找 [package.loaded] 表, 检测 modname 是否被加载过. 如果被加载过,require 返回 package.loaded[modname] 中保存的值. 否则,它会为模块寻找加载器. require 遵循 [package.…
函数 函数是对语句和表达式进行抽象的主要机制 两种用法 一是可以完成特定的任务,一句函数调用被视为一条语句 二是以只用来计算并返回特定的结果,视为一句表达式 print("Hello, World") a = math.sin(3) + math.cos(10) print(os.date()) 无论哪种用法都需要将所有参数放到一对圆括号中 但如果参数是字面字符串或 table 构造式的话,可以放在括号中,也可以不放 即使在调用函数时没有参数,也必须有一个 () 空括号,如调用 os.…
一.lua安装和编程环境搭建 lua语言可以在官网:http://luadist.org/下载安装包安装,编程IDE之前学习使用的是SciTE(https://www.cnblogs.com/movin2333/p/14348703.html),这个IDE安装时会一并安装lua,当然,vscode.idea.luaStudio等IDE也可以编写lua,这次使用SublimeText编写lua,SublimeText的内地官网:http://www.sublimetext.cn/. 二.lua语法…
一直以来对Lua热更新技术很感兴趣,在上周开始了对Lua的学习,主要学的是uLua. 直接上干货 准备工作: LuaInterface包括两个核心库一个是LuaInterface.dll,一个是Luanet.dll,我们可以通过LuaInterface完成Lua和C#(CLR)之间的互相调用 需要在vs的工程中导入两个dill分别是LuaInterface.dll和luanet.dll,前者是vs调用lua时需要引用,并在vs的工程中引入命名空间using LuaInterface;引用以后就可…
这几天草草的浏览了一下电子版的<lua程序设计>,没有懂的地方就自动忽略了,挑拣了一些可以理解的部分一直在推进.推进至后面的时候已经浑浑噩噩的了,有种想看完这本书的强迫症的感觉.推进CAPI部分的时候发现难度一下子提升了,有种难以理解的感觉,而且这本书没有相对应的练习,只是看书没有进行相应的实践,确实难度比较大.这里先暂缓推进这本书的进程,决定拿一下小的项目来试试写lua代码的感觉,写完这个项目在回去体会lua程序设计这本书,这样可能效果会更好一些.这里我会列出项目描述,而且会记录完成这个项目…
Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生成了一个exe,直接可以测试lua了 方式二(推荐): 从https://code.google.com/p/luaforwindows/ 下载“LuaForWindows_v5.1.4-46.exe”,一键安装即可  二.执行 lua xxx.lua 三.注释 1.行注释格式:-- 2.块注释格式…