【lua菜鸟③】变量和循环

Lua 变量

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

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

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

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

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

变量的默认值均为 nil。

a=5
print(a)
function fun1()
    local a=3
    print(a)
end
fun1()
print(a)

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

[Running] lua "e:\Rare\Lua\demo9.lua"
5
3
3
5
[Done] exited with code=0 in 0.083 seconds

赋值语句

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

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

赋值遇到的常见情形:

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

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

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

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)

结果是这样的:

[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 也提供了 . 操作。

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

例如:

site={}
site['key']='rare0716.xyz'
print(site.key)
print(site['key'])
print(site[1])  --lua下标从1开始
[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比较像的一个循环)

-- repeat
--     statements
--  until( condition )
i=1
repeat
    print('hello')
    i=i+1   --i++失败,啊哈哈哈
until(i>5)

结果是这样的

[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 循环为例:

while( true )
do
   print("循环将永远执行下去")
end

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

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

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

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

原文发布于微信公众号 - Python与MySQL(Python_Rick)

原文发表时间:2018-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Deep learning进阶路

C++随记(八)---存储持续性、作用域和链接性

版权声明:本篇文章是阅读《C++primer plus (第6版)中文版》第9章之后所作的笔记。部分文字和图表摘自于这本书。 C++随记(八)---存储持续性、...

1920
来自专栏公众号文章

Golang 入门系列(二)学习Go语言需要注意的坑

上一章节我们已经了解了 Go 环境的配置,不了解的,请查看前面的文章 https://www.cnblogs.com/zhangweizhong/p/94599...

1284
来自专栏重庆的技术分享区

关于eslint使用规则,和各种报错对应规则

4985
来自专栏liulun

Nim教程【十五】【完结】

模版 模版是Nim语言中的抽象语法树,它是一种简单的替换机制,在编译期被处理 这个特性使Nim语言可以和C语言很好的运行在一起 像调用一个方法一样调用一个模版 ...

2258
来自专栏大数据挖掘DT机器学习

Python一些基础面试题目总结

1 Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一、对象的引用计数机制 pytho...

3706
来自专栏xiaoxi666的专栏

C++数据个数未知情况下的输入方法

我们经常需要输入一串数,而数据个数未知。这时候就不能以数据个数作为输入是否结束的判断标准了。

911
来自专栏Jerry的SAP技术分享

使用javap深入理解Java整型常量和整型变量的区别

下面我们就用javap将.class文件反编译出来然后深入研究Java里整型变量和整型常量的区别。

1403
来自专栏开源优测

python selenium2 - webelement操作常用方法

完整路径 C:\Python27\Lib\site-packages\selenium\webdriver\remote\webelement...

3055
来自专栏阮一峰的网络日志

在PHP语言中使用JSON

我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识。

1233
来自专栏xx_Cc的学习总结专栏

C - 基础总结

35411

扫码关注云+社区

领取腾讯云代金券