Lua学习(一)

LUA 语言

1. 什么是lua?

lua 是轻量小巧的编程语言,其设计的目的就是为了嵌入到应用程序里面去。

从而为应用程序 提供扩展。

使用的是标准的c并以源码的方式对外开放

1.1 准备工作

首先下载lua -> lua官网 下载

到达官网之后点击 download

在这里插入图片描述

选择压缩文件,这里面的是源码需要我们编译。
在这里插入图片描述

在这里我使用的是linux系统。

  • 将压缩包传入到虚拟机我使用的是Xftp和Xshell 找到存放压缩包的目录
tar - zxvf lua-5.4.6.tar.gz
  • 解压之后就是到达有 makefile的文件夹
make linux
  • 到这里就基本完成了
  • make完成之后会生成两个exe文件分别是lua 和luac
  • 其中lua是可以直接执行lua 脚本的
  • luac则是将lua编译生成.out文件然后运行.out文件

在这期间我遇到了一个问题就是我没有make命令。只需要输入如下命令即可:

yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++

2. 基本语法

2.1 注释
  • 单行注释
--
  • 多行注释(快捷键 一般为 ctrl + shift + ?)
--[[
 多行注释
 多行注释
 --]]
2.2 标识符

lua 可以使用_,数字,字母,表示变量但是不能使用特殊符号表示变量。下面都是正确的表示符表示。

mohd         zara      abc     move_name    a_123
myname50     _temp     j       a23b9        retVal
2.3 关键字

首先是关键字被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 内部全局变量。

2.4 全局变量

默认情况下 变量都是全局的,局部的变量出现在方法中。

3. 数据类型

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 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

4. 变量

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 
4.1 赋值语句
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
--变量个数 < 值的个数             多余的值会被忽略

5. 循环

5.1 while循环

在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。

a=0
while(a < 10)
    do
    print("a的值是:",a)
    a = a+1
end
5.2 for循环
for var=exp1,exp2,exp3 do  
    <执行体>  
end 
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1for i = 20, 10,-2 do
	print(i)
end

5.3泛型for循环

泛型 for 循环通过一个迭代器函数来遍历所有值,类似 java 中的 foreach 语句。

a= {
    
    "one","two","three","four","five"}
for i, v in ipairs(a) do
    print(i,v)
end
5.4 repeat until 循环

for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat…until 循环的条件语句在当前循环结束后判断。

b =0
repeat
    print(b)
    b = b+1
until(b >10 )
5.5 break 语句

break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句

a = 10

--[ while 循环 --]
while( a < 20 )
do
   print("a 的值为:", a)
   a=a+1
   if( a > 15)
   then
      --[ 使用 break 语句终止循环 --]
      break
   end
end

6. 流程控制

6.1 if语句

流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。

--[ 0 为 true ]
if(0)
then
    print("0 为 true")
end
6.2 if else 语句

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。

6.3 if else if 语句

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

猜你喜欢

转载自blog.csdn.net/m0_52021450/article/details/132556063
今日推荐