Lua开发--入门

一 Lua简介
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua特性:

1.轻量级:用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
2.可扩展:提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
3.支持面向过程编程和函数式编程
4.自动内存管理:只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象
5.语言内置模式匹配:闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;

二 环境配置
环境下载地址:lua
安装之后在命令行输入:

lua -i

在这里插入图片描述出现以上运行结果则证明配置成功!

可以直接在里面执行lua代码,也可以使用 lua xx.lua运行脚本!

三 基本语法
1)注释

– 单行注释(两个减号)

–[[ 多行注释 ]]–

2)关键字
lua保留关键字不能作为常量或变量或其他用户自定义标示符:

and 	
break 	
do 	
else
elseif 	
end 	
false 	
for
function 	
if 	
in 	
local
nil 	
not 	
or 	
repeat
return 	
then 	
true 	
until
while 	
goto

3)连接符

..
print("X".."Y")
--XY

4)计算字符串长度

#
print(#"hello")
--5

5)赋值
1.多个变量赋值

a,b=1,2,3
c,d,e=1,2
print(a.."-"..b)
print(c.."-"..d.."-"..e)
--1-2
--1-2-nil

2.交换

a,b=3,4
print(a.."-"..b)
a,b=b,a
print(a.."-"..b)
--3-4
--4-3

四 Lua数据类型
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表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
print(type("Hello world"))      --> string
print(type(10.4*3))             --> number
print(type(print))              --> function
print(type(type))               --> function
print(type(true))               --> boolean
print(type(nil))                --> nil
print(type(type(X)))            --> string

nil
nil类型表示一种没有任何有效值,只有一个值:nil

print(x)
--nil

对于全局变量和 table,nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉。
代码示例:

tab1 = { key1 = "val1", key2 = "val2", key3="val3" }
for k, v in pairs(tab1) do
    print(k .. " - " .. v)
end
 
tab1.key1 = nil
for k, v in pairs(tab1) do
    print(k .. " - " .. v)
end

x=10
print("删除前x=",x)
x=nil
print("删除后x=",x)

输出结果为:

key1 - val1
key3 - val3
key2 - val2
key3 - val3
key2 - val2
删除前x=        10
删除后x=        nil

bool
boolean 类型只有两个可选值:true 和 false,Lua 把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true

if 0 then
	print("0 is true")
else
	print("0 is false")
end



if type(x) then
	print("type(x) is string")
else
	print("type(x) is nil")
end
print(type(type(x)))

--0 is true
--type(x) is string
--string

number
Lua 默认只有一种 number 类型 ,整型和浮点型均为number类型

print(type(1))
print(type(1.111))

--number
--number

string
lua的字符串类型用单引号/双引号/2个方括号表示

t1="hello"
t2='hell0'
t3=[[hello]]

table

table 的创建通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表

tab={"Tom","Lili","Jon"}
for k,v in ipairs(tab) do
print(k,"--",v)
end


tab2={key1=18,key2=22,key3}
for k,v in pairs(tab2) do
print(k,"--",v)
end

输出结果为:

1       --      Tom
2       --      Lili
3       --      Jon
key1    --      18
key2    --      22

thread

Lua最主要的线程是协同程序(coroutine)。
它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值