Lua入基本的数据类型与语法

Lua基础-目录

  • Lua
        • 常用的数据类型:
        • 类型讲解:
            • 1. string 类型:
            • 2. table类型
            • 3.数字类型 number
            • 4. 函数 function
            • 5. 线程 thread
            • 6. 自定义类型 userdata 是一种自定义的类型,有c/c++创建
          • 分支语句
          • 循环语句
            • 1. while循环
            • 2. for循环
            • 增强for循环(迭代器循环)

Lua

常用的数据类型:

string number boolean(true false) nil(空值) table function thread userdata

需要注意的是lua不区分double 或者long ,只有一种number类型,也不支持long long int 这种类型,但是他的即时编译器LuaJIT支持。

类型讲解:

1. string 类型:

和Java的String类型相似,但是不完全相同,和python也有那么一点点相似,介绍其用法。
首先是格式: 可以放在双引号之间,也可以放在单引号之间,此外也可以放在[[]]之间,最后一种用于存放那种长度比较长且中途进行过换行的字符串。
举个例子:
Lua入基本的数据类型与语法_第1张图片
前面的为行号无需在意,进行输出
Lua入基本的数据类型与语法_第2张图片
还有一种情况就是➕,我们知道在Java中用+可以对字符串进行一个拼接,但是在lua中已经无法这样子使用了
举例:
Lua入基本的数据类型与语法_第3张图片
对此我们进行一个输出
Lua入基本的数据类型与语法_第4张图片

我们发现str1 str2都是number类型,也就是说现在是一个数字而不是字符串,这个与我们所学的Java并不相同
其次我们发现字符串a与1相加时报错了,告诉我们字符串与数字不能够进行相加。
那么如何进行拼接呢? 采用的是 …来进行拼接
案例:
Lua入基本的数据类型与语法_第5张图片
输出
Lua入基本的数据类型与语法_第6张图片

显然现在都能正常输出,且和字符串进行拼接的效果一模一样。

2. table类型

table 类型可以理解为一个容器,其内部可以存放各种东西,想什么字符串、数字都可以也可以存放与自己类型相同的物品。
例如:
Lua入基本的数据类型与语法_第7张图片
输出结果为:
Lua入基本的数据类型与语法_第8张图片
需要注意的是,我们发现索引为0的输出的为nil也就是null,而索引为1的输出的是第一个数,这是因为lua的索引起始位置与我们常见的语言的不同,他的起始位置是1,终止位置的索引是他的长度。

3.数字类型 number

数字类型就比较直接了,包含所有类型的数字,比如说int long double float 都不进行区分,而是直接归为number类,需要注意的是,不支持很大的数,如果特别大,则会报错
Lua入基本的数据类型与语法_第9张图片

输出结果:
Lua入基本的数据类型与语法_第10张图片

显然都是number 类型,同时如果过大直接成了inf,超出了限制。
其运算与其他语言的相似

print(1+2) --表示加法  
print(1-2) --表示减法  
print(1*2) --表示乘法  
print(1/2) --表示除法  
print(2^2) --表示次方  
print(13//2) -- 表示除法,不保留小数  
print(1>2) --大于  
print(1<2) -- 小于  
print(1<=2) --大于等于  
print(1<=2) --小于等于  
print(1~=2) --不等于

输出结果:
Lua入基本的数据类型与语法_第11张图片

这里的“–”是注释,这个注释与Java python的注释不同

4. 函数 function

声明方式: function 函数名(参数) 内容 end
这个样式类似于JS,但是和JS不同,这个不存在大括号来划分一个作用域,而是简单的用end来表示这个函数的作用域的结束位置
案例:

function test(s)  
	a=1  
	b=2  
print(s+a+b)  
end 
x=test(2)  

输出结果:
Lua入基本的数据类型与语法_第12张图片

函数创建的位置也需要注意,一般而言,函数的创建位置需要在调用方法之上,否则相当是调用了一个不存在的东西,直接会发生报错:
案例:

test=sum_number(1,2)  
function sum_number(num1,num2)  
	print(num1+num2)  
end  

结果:
Lua入基本的数据类型与语法_第13张图片

5. 线程 thread
6. 自定义类型 userdata 是一种自定义的类型,有c/c++创建
分支语句

分支语句比较简单,只有一个if语句:
语法格式:

if (条件)   	
  then  内容   
elseif(内容)   
  then  
    内容  
else  
	内容  
end  

案例:

a = 5  
if(a>2)  
  then  
	print("是的")  
elseif(a==5)  
  then  
   print(3)  
else  
   print("????")  
end  

输出结果:
在这里插入图片描述

循环语句

循环语句和其他的语言看起来相似,不同的是在while循环中还存在着do,这和Java的区别就很大:

1. while循环

while循环格式:
while(条件体)

do  
	内容  
end  

案例:

a=5;  
while(a<10)  
do  
	a=a+1;  
	b=a;  
	print('b='..b)  
end  

输出结果为:
Lua入基本的数据类型与语法_第14张图片

2. for循环

for格式:

for i=起始,终止,步长 do  
	内容  
end 

类似与python的格式,
案例:

for i=1,20,2  
do  
	print('i='..i)  
end  

输出结果:
Lua入基本的数据类型与语法_第15张图片

增强for循环(迭代器循环)

在一个table中的数据可以通过此形式进行一个循环

for i,v in ipairs(table_name) do  
  -- body  
end  

案例:

table={"123","234","345","567"}  
for i,v in ipairs(table) do  
	print("index"..i..":= "..v)  
end  

结果:
Lua入基本的数据类型与语法_第16张图片

你可能感兴趣的:(lua,nginx)