前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【lua菜鸟③】变量和循环

【lua菜鸟③】变量和循环

作者头像
福贵
发布2018-07-25 10:45:37
1.7K0
发布2018-07-25 10:45:37
举报
文章被收录于专栏:菜鸟致敬菜鸟致敬

Lua 变量

{lua的特点:①不需要分号结尾,但是支持分号啊,如果一行写多个语句就用它啊②没有花括号③函数也不需要声明类型,却和c++的语法极其类似}

变量在使用前,必须在代码中进行声明,即创建该变量。但是我们并不需要像 Java一类的强类型语言在定义的时刻声明类型,lua会自己判断变量的类型。

Lua 变量有三种类型:全局变量、局部变量、表中的域

Lua 中的变量默认定义全局变量,即使在语句块或是函数里,除非用 local 显式声明为局部变量。

局部变量的作用域为从声明位置开始到所在语句块结束。(所以声明在一个脚本代码最外面层的变量和全局变量类似)

变量的默认值均为 nil。

代码语言:javascript
复制
a=5
print(a)
function fun1()
    local a=3
    print(a)
end
fun1()
print(a)

执行以上实例输出结果为:

代码语言:javascript
复制
[Running] lua "e:\Rare\Lua\demo9.lua"
5
3
3
5
[Done] exited with code=0 in 0.083 seconds

赋值语句

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

代码语言:javascript
复制
a = "hello" .. "world"
t.n = t.n + 1

赋值遇到的常见情形:

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

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

变量个数和值的个数不一致

代码语言:javascript
复制
a,b,c=1,2,3
d,e,f=4,5
g,h=6,7,8
print(a,b,c,d,e,f,g,h)

结果是这样的:

代码语言:javascript
复制
[Running] lua "e:\Rare\Lua\demo12.lua"
1  2  3  4  5  nil  6  7

[Done] exited with code=0 in 0.082 seconds

使用局部变量的两个好处:

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

索引

对 table 的索引使用方括号 [ ]。Lua 也提供了 . 操作。

代码语言:javascript
复制
t[i]t.i
-- 当索引为字符串类型时的一种简化写法
gettable_event(t,i)
-- 采用索引访问本质上是一个类似这样的函数调用

例如:

代码语言:javascript
复制
site={}
site['key']='rare0716.xyz'
print(site.key)
print(site['key'])
print(site[1])  --lua下标从1开始
代码语言:javascript
复制
[Running] lua "e:\Rare\Lua\demo10.lua"
rare0716.xyz
rare0716.xyz
nil
[Done] exited with code=0 in 0.075 seconds

Lua 循环

Lua 语言提供了三种常见的循环:

循环类型

描述

while 循环

在条件为 true 时重复地执行语句。执行前会先检查条件是否为 true。

for 循环

重复执行指定语句,重复次数可在 for 语句中控制。

repeat...until

重复执行循环,直到指定的条件为真时为止。


repeat...until 在一般的语言中比较少见,举个栗子(和do...while比较像的一个循环)

代码语言:javascript
复制
-- repeat
--     statements
--  until( condition )
i=1
repeat
    print('hello')
    i=i+1   --i++失败,啊哈哈哈
until(i>5)

结果是这样的

代码语言:javascript
复制
[Running] lua "e:\Rare\Lua\demo11.lua"
hello
hello
hello
hello
hello

[Done] exited with code=0 in 0.082 seconds

这里想对比一下几大语言的速度 # 跳过,作死,没有配c环境

循环控制语句

循环控制语句用于控制程序的流程, 以实现程序的各种结构方式。

Lua 支持以下循环控制语句:

控制语句

描述

break 语句

退出当前循环或语句,并开始脚本执行紧接着的语句。


无限循环

在循环体中如果条件永远为 true 循环语句就会永远执行下去,以下以 while 循环为例:

代码语言:javascript
复制
while( true )
do
   print("循环将永远执行下去")
end

# 就是传说中的死循环,啊哈哈哈。

注意Lua的运行效率哟,跑的贼快了,语法也简单

文章大部分改自菜鸟教程,适合我这样的菜鸟。

贴一张图,来自师姐没有版权,心虚。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与MySQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lua 变量
    • 赋值语句
      • 索引
      • Lua 循环
        • repeat...until 在一般的语言中比较少见,举个栗子(和do...while比较像的一个循环)
          • 结果是这样的
            • 这里想对比一下几大语言的速度 # 跳过,作死,没有配c环境
              • 循环控制语句
                • 无限循环
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档