Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
菜鸟教程在线编辑窗口:http://www.runoob.com/try/runcode.php?filename=HelloWorld&type=lua
1.区分大小写 Apple和apple不同 标识符采用字母数字下划线并且不以字母开头,一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。
2.keywords和语法:
and or not 与或非运算;
true false 真假;
nili Flag = nil - -Flag为空,表示将该变量删除了;
//全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。
print(b)
>nil
for end
数值for循环
function f(x)
print("function")
return x*2
end
for i=1,f(5) do print(i)
end
--result:
function
1
2
3
4
5
6
7
8
9
10
--or的三个表达式在循环开始前一次性求值,以后不再进行求值。
--比如上面的f(x)只会在循环开始前执行一次,
--其结果用在后面的循环中。
泛型循环:
days = {"Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday"}
for i,v in ipairs(days) do print(i) print(v) end
--1
Sunday
2
Monday
3
Tuesday
4
Wednesday
5
Thursday
6
Friday
7
Saturday
while do end
while(condition)
do
statements
end
repeat until
repeat
statements
until( condition )
嵌套
j =2
for i=2,10 do
for j=2,(i/j) , 2 do
if(not(i%j))
then
break
end
if(j > (i/j))then
print("i 的值为:",i)
end
end
end
break 退出循环
if then end /if then elseif then end
--[ 定义变量 --]
a = 10;
--[ 使用 if 语句 --]
if( a < 20 )
then
--[ if 条件为 true 时打印以下信息 --]
print("a 小于 20" )
end
print("a 的值为:", a)
function
function maximum (a)
local mi = 1 -- 最大值索引
local m = a[mi] -- 最大值
for i,val in ipairs(a) do
if val > m then
mi = i
m = val
end
end
return m, mi
end
print(maximum({8,10,23,12,5}))--多返回值
结果:23 3
和 C 语言类似,在函数参数列表中使用三点 … 表示函数有可变的参数
do
function foo(...)
for i = 1, select('#', ...) do -->获取参数总数
local arg = select(i, ...); -->读取参数
print("arg", arg);
end
end
foo(1, 2, 3, 4);
end
3.数据类型
lua是动态语言,不用声明变量类型;
nil,boolean包含false和true,number是数字类型lua 默认只有一种 number 类型 – double(双精度)类型,string 字符串类型 “”/”声明,[[]]表示长串,function 地位和int long是一样的,可以作为参数,可以匿名,userdata 自定义数据类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用,thread用于执行协同程序的独立执行线程,线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。table 关联数组,和c++中的map类似,数组的索引可以是数字或者是字符串,下标从1开始。
4.变量
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束,变量的默认值均为 nil。 local d = 6
5.赋值语句:
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
x, y = y, x -- swap 'x' for 'y'
6.table 索引
t[i]
t.i -- 当索引为字符串类型时的一种简化写法
gettable_event(t,i) -- 采用索引访问本质上是一个
类似这样的函数调用
6.运算符
不等于 ~=
乘幂 ^
计算长度 # 相当于sizeof()stringLength=#'hello world'
连接.. a=' hello'
b=' world'
c=a..b -- c contains 'hello world'