lua 是轻量小巧的编程语言,其设计的目的就是为了嵌入到应用程序里面去。
从而为应用程序 提供扩展。
使用的是标准的c并以源码的方式对外开放
首先下载lua -> lua官网 下载
到达官网之后点击 download
在这里我使用的是linux系统。
tar - zxvf lua-5.4.6.tar.gz
make linux
在这期间我遇到了一个问题就是我没有make命令。只需要输入如下命令即可:
yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++
--
--[[
多行注释
多行注释
--]]
lua 可以使用_,数字,字母,表示变量但是不能使用特殊符号表示变量。下面都是正确的表示符表示。
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
首先是关键字被lua 保留了 不能作为用户自定义的标示符。
and | break | do | else |
elseif | end | false | for |
function | if | in | local |
nil | not | or | repeat |
return | then | true | until |
while | goto |
一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。
默认情况下 变量都是全局的,局部的变量出现在方法中。
Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。
数据类型 | 描述 |
---|---|
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
Lua 变量有三种类型:全局变量、局部变量、表中的域。
加上 local 的变量就是局部变量 只能作用于该文件
而如果在一个方法中定义了一个加local的变量那么这个变量只在这个方法中可见
a = 5 -- 全局变量
local b = 5 -- 局部变量
function joke()
c = 5 -- 全局变量
local d = 6 -- 局部变量
end
-- joke() 要先进行调用才可以直接使用
-- print(c,d) --5 nil
print(c,d) -- nil nil
site = {}
site["key"] = "www.baidu.com"
print(site.key)
print(site["key"])
-- 当索引为字符串类型时的一种简化写法
-- 采用索引访问本质上是一个类似这样的函数调用
-- www.baidu.com
-- www.baidu.com
Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
a,b =10,"dada"
print(a,b)
c,d,e,f=10
print(c,d,e,f)
--变量个数 > 值的个数 按变量个数补足nil
--变量个数 < 值的个数 多余的值会被忽略
在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。
a=0
while(a < 10)
do
print("a的值是:",a)
a = a+1
end
for var=exp1,exp2,exp3 do
<执行体>
end
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。
for i = 20, 10,-2 do
print(i)
end
泛型 for 循环通过一个迭代器函数来遍历所有值,类似 java 中的 foreach 语句。
a= {"one","two","three","four","five"}
for i, v in ipairs(a) do
print(i,v)
end
for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat…until 循环的条件语句在当前循环结束后判断。
b =0
repeat
print(b)
b = b+1
until(b >10 )
break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句
a = 10
--[ while 循环 --]
while( a < 20 )
do
print("a 的值为:", a)
a=a+1
if( a > 15)
then
--[ 使用 break 语句终止循环 --]
break
end
end
流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。
--[ 0 为 true ]
if(0)
then
print("0 为 true")
end
Lua if 语句可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码块。
if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end
a =10
if(a >6)then
print("我比6大")
else
print("我比6小")
end
Lua认为false和nil为假,true 和非nil为真。要注意的是Lua中 0 为 true。
if … else if…else 语句搭配使用, 在 if 条件表达式为 false 时执行 elseif…else 语句代码块,用于检测多个条件语句。
if( 布尔表达式 1)
then
--[ 在布尔表达式 1 为 true 时执行该语句块 --]
elseif( 布尔表达式 2)
then
--[ 在布尔表达式 2 为 true 时执行该语句块 --]
elseif( 布尔表达式 3)
then
--[ 在布尔表达式 3 为 true 时执行该语句块 --]
else
--[ 如果以上布尔表达式都不为 true 则执行该语句块 --]
end