使用工具:SciTE
Lua的特点:
① 可扩展性。Lua 的扩展性非常卓越,以至于很多人把 Lua 用作搭建领域语言的工具(注:比如游戏脚本)。Lua 被设计为易于扩展的,可以通过 Lua 代码或者 C代码扩展,Lua 的很多功能都是通过外部库来扩展的。Lua 很容易与 C/C++、java、fortran、Smalltalk、Ada,以及其他语言接口。
② 简单。Lua 本身简单,小巧;内容少但功能强大,这使得 Lua 易于学习,很容易实现一些小的应用。他的完全发布版(代码、手册以及某些平台的二进制文件)仅用一张软盘就可以装得下。
③ 高效率。Lua 有很高的执行效率,统计表明 Lua 是目前平均效率最高的脚本语言。
④ 与平台无关。Lua 几乎可以运行在所有我们听说过的系统上,如 NextStep、OS/2、PlayStation II (Sony)、Mac OS-9、OS X、BeOS、MS-DOS、IBM mainframes、EPOC、PalmOS、MCF5206eLITE Evaluation Board、RISC OS,及所有的 Windows 和 Unix。Lua 不是通过使用条件编译实现平台无关,而是完全使用 ANSI (ISO) C,这意味着只要你有 ANSI C 编译器你就可以编译并使用 Lua。
单行注释 --
多行注释 --[[ --]]
示例代码:
- print("hello World") --打印hello world
- ---------------------------------------------------------------------------------------
- function fact(n) --函数 fact() 打印n的阶乘
- if n==0 then -- if else 语句
- return 1
- else
- return n*fact(n-1)
- end
- end
- print("enter a number:")
- a=io.read("*number") --读取一个number
- print(fact(a)) --打印结果
Lua中的转义字符:
- \a bell
- \b back space -- 后退
- \f form feed -- 换页
- \n newline -- 换行
- \r carriage return -- 回车
- \t horizontal tab -- 制表水平
- \v vertical tab --制表垂直
- \\ backslash -- "\"
- \" double quote -- 双引号
- \' single quote --单引号
- \[ left square bracket -- 左中括号
- \] right square bracket -- 右中括号
- -------------------------------------------------------------------------------------
- print("one line\nnext line\n\"in quotes\", 'in quotes'")
Lua是动态类型语言,变量不要类型定义,Lua中的8个基本类型:
nil,boolean,number,string,userdata,function,thread,table
- print(type("hello World")) --string类型
- print(type(10.3*3)) --number类型
- print(type(print)) --function函数类型
- print(type(type)) --function
- print(type(true)) --boolean
- print(type(nil)) --nil空类型
- print(type(type(x))) --string类型
- -------------------------------------------------------------------------------------
- print("10" + 1) --> 11string和number之间自动转换类型
- line = io.read() -- 读取一行
- n = tonumber(line) -- string转换成number
- print(tostring(10) == "10") --> number转换成string
连接运算符:..
- print(10 .. 20) --> 1020 .. 字符串连接符
Lua算术运算符:二元运算符:+ - * / ^ (加减乘除幂)
一元运算符:- (负值)
这些运算符的操作数都是实数。
- function norm(x,y)
- local n2=x^2+y^2 --x的平方+y的平方
- return math.sqrt(n2)
- end
- function twice(x)
- return 2*x
- end
Lua关系运算符:< > <= >= true 或者 false == ~= 比较两个值
- a={};a.x=1;a.y=0; --{}构造函数 创建空表
- b={};b.x=1;b.y=0;
- c=a;
- print(c==a)
- print(a==c)
- print(a~=b)
- a==c but a~=b
- print("0"==0)
- print(2<15)
- print("2"<"15")
Lua逻辑运算符:and or not
a and b --如果a为false,返回a,否则返回b and优先级比or高
a or b --如果a为true,返回a,否则返回b
a?b:c(C语言) 等价于 (a and b)or c(Lua语言)
- print(4 and 5) --> 5
- print(nil and 13) --> nil
- print(false and 13) --> false
- print(4 or 5) --> 4
- print(false or 5) --> 5
- print(not false) --> true
Lua表: {}是构造函数,创建一个空表,可以直接初始化一个表days,在lua中下标索引从1开始
- days={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
- print(days[3])
- table={sin(1),sin(2),sin(3),sin(4),sin(5),sin(6),sin(7),sin(8)}
- a={x=0,y=0} 等价于a={}; a.x=0; a.y=0;