迷你lua 5.1参考手册收藏
新一篇: LUA复用代码 | 旧一篇: LUA杂项
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
关键字:
and break do else elseif end false for function if in local nil not or repeat return then true until while
and break do else elseif end false for function if in local nil not or repeat return then true until while
使用变量不需要声明,总是全局变量,除非加"local"。local的作用域是在最里层的end和其配对的关键字之间。全局变量的作用域是整个程序。大小写相关。定义一个变量的方法就是赋值"="操作。变量类型,可以用type()函数来检查:
Nil 空值,所有没有使用过的变量都是nil。nil既是值又是类型。变量清除直接给变量赋以nil值。
Boolean 布尔值true 和 false。只有false和nil才被计算为false,而所有任何其它类型的值,都是true。比如0,空串等等,都是true。
Number 数值,相当于C语言的double实数如:4 0.4 4.57e-3 0.3e12 5e+20
Userdata 可以是宿主的任意数据类型,常用的有Struct和指针。
Thread 线程类型,在Lua中没有真正的线程,将一个函数分成几部份运行。
String 字符串,可以包含'/0'字符,可以定义很长的字符串。用双引号或单引号引用单行,"[["和"]]"引用多行字符串。新版支持"[==["和"]==]"多层标记,=号个数为层数。严格按层数匹配。支持一些转义字符:
/a铃/b退格/f换页/n换行/r回车/t制表符/v垂直制表//反斜杠/"双引号/'单引号/[左中括号/]右中括号
Table 关系表类型,功能强大。可以用除了nil任意类型的值来作数组的索引和内容。
Table的定义:T1 = {} T1[1]=10 T1["John"]={Age=27, Gender="Male"}
这一句相当于T1["John"]["Gender"]="Male"
索引是字符串时可以简写成:T1.John.Gender="Male"或T1.John={Age=27, Gender="Male"}
第一,所有元素之间,总是用逗号","隔开;
第二,所有索引值都需要用"["和"]"括起来;如果是字符串,还可以去掉引号和中括号;
第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编;
T1=
{
10, -- 相当于 [1] = 10
[100] = 40,
John= -- 如果你原意,你还可以写成:["John"] =
{
Age=27, -- 如果你原意,你还可以写成:["Age"] =27
Gender=Male -- 如果你原意,你还可以写成:["Gender"] ="Male"
},
20 -- 相当于 [2] = 20
}
Nil 空值,所有没有使用过的变量都是nil。nil既是值又是类型。变量清除直接给变量赋以nil值。
Boolean 布尔值true 和 false。只有false和nil才被计算为false,而所有任何其它类型的值,都是true。比如0,空串等等,都是true。
Number 数值,相当于C语言的double实数如:4 0.4 4.57e-3 0.3e12 5e+20
Userdata 可以是宿主的任意数据类型,常用的有Struct和指针。
Thread 线程类型,在Lua中没有真正的线程,将一个函数分成几部份运行。
String 字符串,可以包含'/0'字符,可以定义很长的字符串。用双引号或单引号引用单行,"[["和"]]"引用多行字符串。新版支持"[==["和"]==]"多层标记,=号个数为层数。严格按层数匹配。支持一些转义字符:
/a铃/b退格/f换页/n换行/r回车/t制表符/v垂直制表//反斜杠/"双引号/'单引号/[左中括号/]右中括号
Table 关系表类型,功能强大。可以用除了nil任意类型的值来作数组的索引和内容。
Table的定义:T1 = {} T1[1]=10 T1["John"]={Age=27, Gender="Male"}
这一句相当于T1["John"]["Gender"]="Male"
索引是字符串时可以简写成:T1.John.Gender="Male"或T1.John={Age=27, Gender="Male"}
第一,所有元素之间,总是用逗号","隔开;
第二,所有索引值都需要用"["和"]"括起来;如果是字符串,还可以去掉引号和中括号;
第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编;
T1=
{
10, -- 相当于 [1] = 10
[100] = 40,
John= -- 如果你原意,你还可以写成:["John"] =
{
Age=27, -- 如果你原意,你还可以写成:["Age"] =27
Gender=Male -- 如果你原意,你还可以写成:["Gender"] ="Male"
},
20 -- 相当于 [2] = 20
}
Function 函数也是一种类型,也就是说所有的函数本身就是一个变量。
函数的定义:function add(a,b) return a+b end 相当于add = function (a,b) return a+b end
如果函数只有一个参数,可以省略括号。
return语言一定要写在end之前。在中间放上return,写成:do return end。
函数可以接受可变参数个数,用"..."来定义function sum (a,b,...)
如 果想取得...所代表的参数,5.0版本可以在函数中访问arg局部变量(表类型)得到。如 sum(1,2,3,4)则,a = 1, b = 2, arg = {3, 4},在5.1版本多了一个...变量(实际就是参数列表),区别只在于arg和...共同存在的情况,...会使arg变nil。
可以同时返回多个结果,比如:function s() return 1,2,3,4 end
a,b,c,d = s() -- 此时,a = 1, b = 2, c = 3, d = 4
使用面向对象编程:
t = { Age = 27, add = function(self, n) self.Age = self.Age+n end }
print(t.Age) -- 27
t.add(t, 10) 可以简写成:t:add(10)
print(t.Age) -- 37
函数的定义:function add(a,b) return a+b end 相当于add = function (a,b) return a+b end
如果函数只有一个参数,可以省略括号。
return语言一定要写在end之前。在中间放上return,写成:do return end。
函数可以接受可变参数个数,用"..."来定义function sum (a,b,...)
如 果想取得...所代表的参数,5.0版本可以在函数中访问arg局部变量(表类型)得到。如 sum(1,2,3,4)则,a = 1, b = 2, arg = {3, 4},在5.1版本多了一个...变量(实际就是参数列表),区别只在于arg和...共同存在的情况,...会使arg变nil。
可以同时返回多个结果,比如:function s() return 1,2,3,4 end
a,b,c,d = s() -- 此时,a = 1, b = 2, c = 3, d = 4
使用面向对象编程:
t = { Age = 27, add = function(self, n) self.Age = self.Age+n end }
print(t.Age) -- 27
t.add(t, 10) 可以简写成:t:add(10)
print(t.Age) -- 37
单行注释"--"。只要--后面第一个字符不是多行字符串引用符[[,即为多行注释。
语句之间可以用分号";"隔开,也可以用空白隔开。