欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Lua基本语法

程序员文章站 2022-06-04 15:49:32
...

在Lua中具有一个代码块的概念,每个函数或者for循环等都是一个代码块。在Lua中,用 “- - ”来标记该行的注释,使用“- - [ [” 和   “ - - ] ] ”之间括起来的部分进行块注释

Lua 是动态类型语言,变量不要类型定义。

Lua中变量没有类型,值才有类型

Lua 中有8 个基本类型分别为:

类型 说明 简介
nil 空类型 用于表示空
boolean 布尔类型 取值true和false
number 数字类型 表示实数(包括整数和浮点)
string 字符串类型 表示字符和字符串
table 表类型 关于容器,可作为数组、链表、集合等数据结构的使用
function 函数类型 函数本身也是值
userdata 自定义类型 C的自定义数据,如结构体、指针
thread 线程类型 表示协同对象

String类型指字符的序列。lua是8位字节,

Lua中判断,除了false和nil为假,其他值都为真。包括数字0和空的字符串都是真。

Lua基本语法

Lua基本语法 

表达式

一些特别的点:

1. ~=相当于c语言里面的!=,不等于。

2. table、userdata和function是引用比较,只有两个变量指向同一个对象才是相等。

3. 逻辑运算符是"and or not",但是这里的and和or意思跟c语言有不同:

a and b:如果a为false,则返回a,否则返回b;

a or b   :如果a为true,则返回a,否则返回b。

and 的优先级比or 高。( 语言中的三元运算符a?b:c。在Lua 中可以这样实现:

a=10
b=20
c=(a>b)and a or b

print(c)

结果为:20


4. “..”两个点,表示字符连接符;如果操作数是number,则转换为字符串:

注意这里1 ..之间有一个空格,不然会报错。

print(1 .. 2)   -->12 

但是如果是字符串就不需要:

[python] view plain copy
  1. print("hello".."world") -->helloworld  


-- 求类型
             print(type("hall")) print(type(10)) print(type(print)) print(type(true)) print(type(nil))print(type(type(x)))

运行结果:string              number             function           boolean              nil                 string


1、string类型的用法
       Lua中的字符串操作非常出色。下表是一些特殊意义的字符:
特殊的Lua字符串
 字符 意义 字符 意义
     \a 响铃     \v  垂直制表符 
    \b 退格     \\ 反斜杠
    \f 换页符     \“ 双引号
    \n 换行符     \' 单引号
    \r 换行符    \[ 左方括号
   \t 制表符    \] 右方括号
     a、类型转换
     Lua会根据上下文在合理合法的情况下隐式进行数字和字符之间的转换。另外,也可以使用tonumber()函数和tostring()函数显式地进行字符与数字的转换。 见代码实例:
  1. --字符与数字的隐式转换 
  2.  
  3. print("10" + 7)

  4. 输出结果为:17,将字符10隐私转化为Number类型计算 

  1. --字符与数字的显式转换  

  2. print(tonumber("100")+11)  

  3. --输出结果为:111  


-- a,c交换数字
-- a=10 c=20  
-- a,c=c,a
-- print(a,c)

-- -- 运行结果20 10


-- 插入并交换字符串里的数
-- a="wo is laobi\n"
-- print(a)
-- b=string.gsub(a,"is","1111")
-- print(b)
-- -- 运行结果wo 1111 laobi

可以调用tostring()将数字转成字符串,这种转换一直有效:

-- print(tostring(10)=="10") 结果true

-- print(10 ..""=="10")


str ="11"
print(tonumber(str,2))3
print(tonumber(str,8))9

print(tonumber(str,16))17


条件语句

if 条件 then

系列语句

end

if xxx then xxx end;

if xxx then xxx else xxx end;

if xxx then xxx elseif xxx then xxx else xxx end; //elseif可以有很多个,注意else和if中间没有空格!!


循环语句

while   条件  do     |   系列语句     |  end

repeat                 |    系列语句    |  until 条件

for ver =exp1,exp2,exp3  do 可以看成C语言    for( ver =exp1;exp2;exp3)exp3

系列语句

end

exp3不写默认为1。

-- for一样
--           条件
-- for i=1 ,  10,      4 do
-- print(i)

-- end运行结果:1 5 9


泛型for循环


--  <var-list>为变量列表     <exp-list>一般为一个函数

-- for <var-list> in <exp-list> do

--  系列语句

-- end

迭代table元素的(pairs),迭代数组元素的(ipairs)

table2= {"www",name="haha",age=12,sex="boy",3,4,"qqq",5}
for  k,v in  ipairs(table2)  do
print(k,v)
end

print(table2.age)

运行结果:

1 www
2 3
3 4
4 qqq
5 5

t1={1,2,9,[4]="555",[20]="wode",30,7}
for k,v in ipairs(t1) do
	print(k,v)
end
运行结果:
1	1
2	2
3	9
4	30
5	7

t1={1,2,9,[4]="555",[20]="wode",30,7}
for k,v in pairs(t1) do
	print(k,v)
end
运行结果:
1	1
2	2
3	9
4	30
5	7
20	wode
t2={1,2,3,4,5}

table.insert(t2,5,100)//插入

table.remove(t2,3)//删除


相关标签: Lua