您当前的位置: 首页 > 

cuiyaonan2000

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Lua语法

cuiyaonan2000 发布时间:2021-06-23 17:08:00 ,浏览量:0

序言

文本格式 格式1

我们可以将 Lua 程序代码保存到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,如我们将如下代码存储在名为 hello.lua 的脚本文件中:

print("Hello World!")
print("www.runoob.com")


#执行该文件并显示结果
$ lua hello.lua
Hello World!
www.runoob.com
格式2

我们也可以将代码修改为如下形式来执行脚本(在开头添加:#!/usr/local/bin/lua):并为文件增加执行权限,跟shell一样的.cuiyaonan2000@163.com

#!/usr/local/bin/lua

print("Hello World!")
print("www.runoob.com")


#执行并显示结果
./hello.lua 
Hello World!
www.runoob.com
注释 单行注释

两个减号是单行注释:

--

多行注释
--[[
 多行注释
 多行注释
 --]]

变量名

跟java差不多.

  1. 最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的 。
  2. _加大写字母都是Lua的全局变量

关键词

以下列出了 Lua 的保留关键词。保留关键字不能作为常量或变量或其他用户自定义标示符:关键字很少,还有很多逻辑判断的,所以很容易掌握cuiyaonan2000@163.com

全局变量

在默认情况下,变量总是认为是全局的。

全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。

> print(b)
nil
> b=10
> print(b)
10
>

如果你想删除一个全局变量,只需要将变量赋值为nil。
b = nil
print(b)      --> nil
局部变量

Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。----即只有使用local的才是局部变量cuiyaonan2000@163.com

应该尽可能的使用局部变量,有两个好处:

  • 1. 避免命名冲突。
  • 2. 访问局部变量的速度比全局变量更快。

赋值语句
赋值是改变一个变量的值和改变表域的最基本的方法。

a = "hello" .. "world"
t.n = t.n + 1

Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。

a, b = 10, 2*x              a=10; b=2*x



遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:

x, y = y, x                     -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i]         -- swap 'a[i]' for 'a[j]'


当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:

a. 变量个数 > 值的个数             按变量个数补足nil
b. 变量个数 < 值的个数             多余的值会被忽略



多值赋值经常用来交换变量,或将函数调用返回给变量:
f()返回两个值,第一个赋给a,第二个赋给b。

a, b = f()

循环控制语句 控制语句描述break 语句退出当前循环或语句,并开始脚本执行紧接着的语句。goto 语句将程序的控制点转移到一个标签处。 while循环
while( true )
do
   print("循环将永远执行下去")
end
for循环
#var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。


for var=exp1,exp2,exp3 do  
      
end  

用例:

#!/usr/local/bin/lua  
function f(x)  
    print("function")  
    return x*2  
end  
for i=1,f(5) do print(i)  
end

结果:

function
1
2
3
4
5
6
7
8
9
10

注释:for的三个表达式在循环开始前一次性求值,以后不再进行求值。比如上面的f(x)只会在循环开始前执行一次,其结果用在后面的循环中。

泛型for循环

i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。

--打印数组a的所有值  
a = {"one", "two", "three"}
for i, v in ipairs(a) do
    print(i, v)
end 
流程控制
--[ 0 为 true ]
if(0)
then
    print("0 为 true")
end


if(布尔表达式)
then
   --[ 布尔表达式为 true 时执行该语句块 --]
else
   --[ 布尔表达式为 false 时执行该语句块 --]
end

if( 布尔表达式 1)
then
   --[ 布尔表达式 1 为 true 时执行该语句块 --]
   if(布尔表达式 2)
   then
      --[ 布尔表达式 2 为 true 时执行该语句块 --]
   end
end

一些常用的函数 函数名说明print

日志打印输出.如:print('输出内容')

tonumber将字符串转换为数字,如:tonumber('1')type       输出变量类型,如 type(变量名)

关注
打赏
1638267374
查看更多评论
立即登录/注册

微信扫码登录

0.0809s