15分钟后学习Lua

2020-07-01 06:06:34

--两个破折号开始一行注释。--[[添加两个和]';s使其成为多行comment.--]]--1.变量和流control.。-num=42--所有数字都是双精度的。--Don';t惊慌失措,64位双精度数有52位用于--存储精确的int值;机器精度--对于需要<;52位的整数来说不是问题。s=';WAlternate';--像Python.t=";这样的不变字符串也很好";u=[[双括号开始和结束多行字符串。]]t=nil--未定义t;Lua有垃圾回收。-块表示为垃圾收集。50 do num=num+1--No++or+=type运算符。end--if子句:if num>;40则print(';over 40';)否则如果s~=';WAlternate&39;则--~=不等于。--等价性检查与Python类似;STR为OK。io.write(';不超过40\n';)--缺省为stdout.Else--缺省情况下变量是全局变量。thisIsGlobal=5--骆驼案例很常见。--如何将变量设为LOCAL:LOCAL LINE=io.read()--读取下一个stdin行。--字符串连接使用..。操作员:打印(';冬天即将来临,';……。行)end--未定义变量返回nil。--这不是错误:foo=anUnnownVariable--now foo=nil.aBoolValue=false--只有nil和false为false;0和';';为true!如果不是aBoolValue,则print(';tWAS false';)end--';or';and';和';为短路。或';no';-->;';no';karlSum=0,对于i=1,100 do--范围包括两端。karlSum=karlSum+iend--使用";100,1,-1";作为倒计时的范围:fredSum=0 for j=100,1,-1 do fredSum=fredSum+j end--通常,范围是BEGIN,END[,STEP]。--另一个循环结构:重复打印(';未来的方式';)Num=Num-1直到Num==0--2.如果n<,则Functions.--function fib(N);2然后返回1 end return fib(n-2)+fib(n-1)end--闭包和匿名函数都可以:函数add(X)--返回的函数是在调用加法器时创建的,并且记住x的值:返回函数(Y)return x+y enda1=add(9)a2=add(36)print(a1(16))-->;25print(a2(64))-->;100--返回、函数调用和赋值都可以使用长度可能不匹配的列表。--不匹配的接收方为零;--不匹配的发送方被丢弃。x,y,z=1,2,3,4--现在x=1,y=2,z=3,4被丢弃。函数栏(a,b,c)print(a,b,c)返回4,8,15,16,23,42endx,y=bar(&#。Zaphod nil nil";--现在x=4,y=8,值15..42被丢弃。--函数是一流的,可以是局部/全局的。--这些是相同的:函数f(X)return x*xendf=function(X)return x*x end--也是这样:局部函数g(X)return math.sin(X)endlocal g;g=function(X)return math.sin(X)end--the';DECL支持g-自引用。--顺便说一下,trig函数以弧度形式工作。--使用一个字符串参数的调用不需要括号:print';hello';--Works fine.--3.Tables.--Tables=Lua唯一的复合数据结构;--它们是关联数组。--类似于php数组或js对象,它们是--散列查找字典,也可以用作列表。--使用表格作为字典/映射:--字典文字默认有字符串键:t={key1=';value1';,key2=false}--字符串键可以使用类似js的点号:print(t.key1)--prints';value1';.t.newKey={}--添加新的键/值对。t.key2=nil--从表中删除key2。--任何(非nil)值的文字表示法作为键:u={[';@!#';]=';Qbert';,[{}]=1729,[6.28]=';tau';}print(u[6.28])--print";--键匹配基本上是按数字和字符串的值进行的,但对表是按标识进行的。a=u[';@!#';]--现在a=';qbert&39;.b=u[{}]--我们可能期望1729,但由于查找失败,因此它为nil:--b=nil。它失败了--因为我们使用的键与用于存储原始值的键不是同一个对象。因此--字符串和数字是更便携的键。--单表参数函数调用不需要括号:函数h(X)print(x.key1)Endh{key1=';sonmi~451';}--prints';sonmi~451';.for key,val in Pair(U)do--Table迭代。print(key,val)end--_G是所有全局的特殊表格。print(_G[';_G';]==_G)--打印';true';.--使用表格作为列表/数组:--列表文字隐式设置整型键:v={';value1';,';value2';,1.21,';Gigawts';}对于i=1,#v do--#v是列表的v的大小。Print(v[i])--指数从1开始!!太疯狂了!结束--A';