lua for循环

Lua for循环

倖福魔咒の 提交于 2019-12-18 05:29:07
在Lua中for语句跟其他语言的for类似,语法上有一点点区别。Lua的for语句有两种:数字型和泛型 数字型: for var=exp1,exp2,exp3 do <执行体> end var从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次“执行体”。exp3是可选的,如果不指定,默认为1。例如 for i=1,f(x) do print(i) end for i=10,1,-1 do print(i) end for的三个表达式在循环开始前一次性求值,以后不再进行求值。比如上面的f(x)只会在循环开始前执行一次,其结果用在后面的循环中。 可以验证如下: #!/usr/local/bin/lua function f(x) print("function") return x*2 end for i=1,f(5) do print(i) end 输出: function 可以看到 函数f(x)只在循环开始前执行一次。 泛型:泛型for循环通过一个迭代器函数来遍历所有值,类似java中的foreach语句 --打印数组a的所有值 for i,v in ipairs(a) do print(v) end i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。 例如 #!/usr/local/bin/lua days =

Lua基础之语法

可紊 提交于 2019-12-09 19:25:48
目录: 1.输出 2. 注释 3.控制语句 4.赋值语句 5.运算符 6.关键字 7.变量类型 8.其他 原文地址 http://blog.csdn.net/dingkun520wy/article/details/49930543 1.输出 print("Hello world") 2. 注释 单行注释中 , 连续两个减号 "--" 表示注释 多行注释中 , 由 "--[[" 表示注释开始 , 并且一直延续到 "]]" 为止 3.控制语句 (If) if 条件 then ... elseif 条件 then ... else ... end 实例 if 1+1=2 then print("true") elseif 1+2~=3 then print("true") else print("false") end ( While ) while 条件 do ... end 实例 while 1+1~=2 do print("true") end ( Repeat ) repeat ... until 条件 实例 repeat print("Hello") until 1+1~=0 ( For ) for 变量 = 初值 , 终点值 , 步进 do ... end 实例 for i = 1, 10, 2 do print(i) end for 变量 1, 变量 2, ... 变量

luajit官方性能优化指南和注解

[亡魂溺海] 提交于 2019-12-05 22:18:38
转自: https://blog.csdn.net/qq_35624156/article/details/77455670 一、什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版。 二、优势 1)lua是一个免费、小巧、简单、强大、高效、轻量级的嵌入式的脚本语言,lua当前的发行版本5.3.1只有276k。 2)它是用C语言开发的项目,所以可以在大部分的操作系统上运行 3)lua是目前速度最快的脚本语言,既可以提升语言的灵活性还可以最大限度的保留速度 4)其语法非常简单,没有特例 5)lua还可以作为C的API来使用 三、不足和不同 1)lua没有强大的库,所以很多功能实现起来没有python、perl、ruby等脚本语言简洁 2)lua的异常处理功能饱受争议,虽然其提供了pcall和xpcall的异常处理函数 3)lua原生语言中没有提供对unicode编码的支持,虽然可以通过一些折中的办法实现 http://www.cppblog.com/darkdestiny/archive/2009/04/25/81055.html 4)没有提供在C++中应用很广泛的a?b:c的三元运算符操作 5

Lua基础

核能气质少年 提交于 2019-12-03 16:52:16
1. lua 脚本的两种运行方式: 1. $ lua xxx.lua 2. 文件xxx.lua首行加上 #!/usr/bin/lua chmod +x xxx.lua 加上可执行权限 ./xxx.lua 运行lua脚本 2. 注释: -- 单行注释 --[[ 多行注释 --]] 3. Lua 变量 1. 变量在使用前,必须在代码中进行声明,即创建该变量 2. Lua 变量有三种类型:全局变量、局部变量、表中的域 3. Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量 4. 局部变量的作用域为从声明位置开始到所在语句块结束 5. 变量的默认值均为 nil 6. 删除变量 var : var = nil 4. 基本类型(8个) nil、boolean、number、string、userdata、function、thread、table 5. 循环: 1. while循环 while(condition) do statements end 2. for循环 for var = exp1, exp2,e xp3 do statements end 3. repeat..util循环 repeat statements until( condition ) 6. 流程控制: 1. if(condition) then statements

雷林鹏分享:Lua for 循环

匿名 (未验证) 提交于 2019-12-02 23:47:01
  Lua 编程语言中 for 循环语句可以重复执行指定语句,重复次数可在 for 语句中控制。   Lua 编程语言中 for语句有两大类::   数值for循环   泛型for循环   数值for循环   Lua 编程语言中数值for循环语法格式:   for var=exp1,exp2,exp3 do   <执行体>   end   var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。   实例   for i=1,f(x) do   print(i)   end   for i=10,1,-1 do   print(i)   end   for的三个表达式在循环开始前一次性求值,以后不再进行求值。比如上面的f(x)只会在循环开始前执行一次,其结果用在后面的循环中。   验证如下:   #!/usr/local/bin/lua   function f(x)   print("function")   return x*2   end   for i=1,f(5) do print(i)   end   以上实例输出结果为:   function   1   2   3   4   5   6   7   8   9   10   可以看到 函数f(x)只在循环开始前执行一次。  

初识Lua

匿名 (未验证) 提交于 2019-12-02 23:47:01
  前几天为了用xLua,学习了Lua语言,算是能用了...吧?(其实就只是跟着过了一遍....)。但是感觉自己的记性一天不如一天(Orz),还是写个笔记好了,可能会对比着C++来。欢迎批评指正或者补充~ 一.基础 ( 几乎语言都有的东西 )     Lua的数据类型很少,只有8种: nil、boolean、number、string、userdata、function、thread、table。     nil 和C++里的 NULL 比较像,不过要注意的是,type(nil)~=nil 因为type()函数返回的是string。     string 可以用 " ", ' ', [[ ]] 来包裹。其中[[ ]]一般包裹一整块的字符串。     userdata 一般存储C/C++数据。     function 用...来表示可变长参数,并且可以返回多个值。     thread 我也只看了协程部分,见下文。     table 是一个有点想法的数据结构。其组成是 一个数组 和 一个hash表 (我都想要.jpg)。数组的扩张方法是*2(也就是说 capacity永远是2^n )。   2.语法词法      特殊的算术运算符和关系运算符:幂运算是 ^ ,不等于是 ~= 。     逻辑运算符:and,or,not     长度运算符:#

Lua语言基本语法~运算符

前提是你 提交于 2019-11-28 11:50:53
Lua 变量 变量在使用前,必须在代码中进行声明,即创建该变量。 编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。 Lua 变量有三种类型:全局变量、局部变量、表中的域。 Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。 局部变量的作用域为从声明位置开始到所在语句块结束。 变量的默认值均为 nil。 -- test.lua 文件脚本 a = 5 -- 全局变量 local b = 5 -- 局部变量 function joke() c = 5 -- 全局变量 local d = 6 -- 局部变量 end joke() print(c,d) --> 5 nil do local a = 6 -- 局部变量 b = 6 -- 对局部变量重新赋值 print(a,b); --> 6 6 end print(a,b) --> 5 6 赋值语句 赋值是改变一个变量的值和改变表域的最基本的方法。 a = "hello" .. "world" t.n = t.n + 1 Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。 a, b = 10, 2*x <--> a=10; b=2*x 遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作

Lua性能优化

和自甴很熟 提交于 2019-11-27 13:11:52
原文: Lua Performance Tips    基础实例 像其他任何编程语言一样,在Lua中,我们也要遵守以下两条优化程序的规则: 规则1 :不要优化。 规则2 :仍然不要优化(专家除外)   当用Lua编程时,这两条规则显得尤为重要。Lua以性能著称,而且在脚本语言中也因此而值得赞美。   然而,我们都知道性能是编程的一个关键因素。具有复杂指数时间的问题被称作疑难问题并不是偶然发生。太迟的结果是无用的结果。因此,每个优秀的程序员应该总是在花费资源去优化一段代码的代价和这段代码在运行代码时节约资源的收益相平衡。一个优秀的程序员关于优化的第一个问题总是会问:“程序需要优化吗?”如果答案是肯定的(仅当此时),第二个问题应该是:“哪地方?”   为了回答这两个问题我们需要些手段。我们不应该在没有合适的测量时尝试优化软件。大牛和菜鸟之前的不同不是有经验的程序员更好的指出程序的一个地方可能耗时:不同之处是大牛知道他们并不擅长那项任务。   最近几年,Noemi Rodriguez和我用Lua开发了一个CORBA ORB(Object Request Broker)原型,后来进化成OiL(Orb in Lua)。作为第一个原型,以执行简明为目标。为了避免引用额外的C语言库,这个原型用一些计算操作分离每个字节(转化成256的基数)。不支持浮点数。因为CORBA把字符串作为字符序列处理

第五章 Lua的循环语句

允我心安 提交于 2019-11-27 13:03:16
1. 几种循环体使用: while for repeat...until 循环嵌套 跳出循环体关键字:break。 2. while语法: while(true) --括号是bool为true时的等式,true时执行循环 do statements --这是循环体 end 3. for语法: for var=exp1,exp2,exp3 do --初始变量,变量目标对比值,对变量的操控等式 <执行体> --这是循环体 end for i=10,1,-1 do print(i) end 遍历表/数组循环使用: a = {"one", "two", "three"} for i, v in ipairs(a) do print(i, v) end 4. repeat...until语法: repeat statements --这是循环体 until( true ) --括号是bool为true时的等式,true时停止循环 5. 嵌套循环体的使用: ... 来源: https://blog.csdn.net/qq_37765916/article/details/99677167

第三章 Lua基本用法

一笑奈何 提交于 2019-11-27 12:47:52
1. 打印输出信息函数: print("需要打印的字符串信息内容"),这里是没有分号;进行语句结束的。 2. 注释方式: 单行注释:--要注释的内容,两个减号后就是要注释的内容。 多行注释/块注释:--[[要注释的块内容--]],两个减号后两个左中括号后是注释内容后两个减号跟两个右中括号。 3. 标识符: 就是变量名,就是使用首个小写结合后面的首字母大写就好了。 4. 关键字(21): if elseif else for while do break local nil until function return end and in not or repeat then true flase 5. 全局变量: 默认定义出来的变量就是全局变量,使用local 前缀的变量是局部变量。 删除一个全局变量,就将其的值赋值为nil(空)就行了。 6. Lua数据类型(8): nli 表示一个无效值空(在条件表达式中相当于false)。 boolean 包含两个值:false和true。 number 表示双精度类型的实浮点数。 string 字符串由一对双引号或单引号来表示。 function 由 C 或 Lua 编写的函数。 userdata 表示任意存储在变量中的C数据结构。 thread 表示执行的独立线路,用于执行协同程序。 table Lua 中的表(table)其实是一个