• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > 浅谈Lua语句

浅谈Lua语句

作者:hebedich 字体:[增加 减小] 来源:互联网

hebedich 通过本文主要向大家介绍了lua语句,lua循环语句,lua if语句,lua 条件语句,lua 判断语句等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Lua 中的语句支持赋值,控制结构,函数调用,还有变量声明。

不允许空的语句段,因此 ;; 是非法的。

1 语句组 | chuncks

chunck ::= {stat[';']}
</div>

([';'] 应该是表示语句组后面 ; 是可选项。)

2 语句块 | blocks

block ::= chunck
stat ::= do block end
</div>

可以将一个语句块显式地写成语句组,可以用于控制局部变量的作用范围。

3 赋值 | assignment

Lua 支持多重赋值。

多重赋值时,按序将右边的表达式的值赋值给左值。右值不足补 nil,右值多余舍弃。

b = 1
a,b = 4 -- a = 4,b = nil
+++
</div>

Lua 在进行赋值操作时,会一次性把右边的表达式都计算出来后进行赋值。

i = 5
i,a[i] = i+1, 7 -- i = 6 ,a[5] = 7
</div>

特别地,有

x,y = y,x -- 交换 x,y 的值
+++

对全局变量以及表的域的赋值操作含义可以在元表中更改。

4 控制结构

4.1 条件语句

if [exp]
    [block]
elseif [exp]
    [block]
else
    [block]
end
</div>

4.2 循环语句

while [exp]
    [block]
end
+++

repeat
    [block]
until [exp]
</div>

注意,由于 repeat 语句到 until 还未结束,因此在 until 之后的表达式中可以使用 block 中定义的局部变量。

例如:

a = 1
c = 5
repeat
    b = a + c
    c = c * 2
until b > 20
print(c)            -->     40
+++
</div>

4.3 break 和 return

break 和 return 只能写在语句块的最后一句,如果实在需要写在语句块中间,那么就在两个关键词外面包围 do end 语句块。

do break end

5 For 循环

for 循环的用法比较多,单独拎出来讲。

for 中的表达式会在循环开始前一次性求值,在循环过程中不再更新。

5.1 数字形式

for [Name] = [exp],[exp],[exp] do [block] end
三个 exp 分别代表初值,结束值,步进。exp 的值均需要是一个数字。
第三个 exp 默认为 1,可以省略。

a = 0
for i = 1,6,2 do
    a = a + i
end
</div>

等价于

int a = 0;
for (int i = 1; i <= 6;i += 2){ // 取到等号,如果步进是负的,那么会取 i >= 6
    a += i;
}
</div>

5.2 迭代器形式

迭代器形式输出一个表时,如果表中有函数,则输出的顺序及个数不确定(笔者测试得出的结果,具体原因未知)。

迭代器形式的 for 循环的实质

-- 依次返回 迭代器、状态表、迭代器初始值

function mypairs(t)
    function iterator(t,i)
        i = i + 1
        i = t[i] and i      -- 如果 t[i] == nil 则 i = nil;否则 i = i
        return i,t[i]
    end
    return iterator,t,0
end
</div>

-- 一个表
t = {[1]="1",[2]="2"}

-- 迭代形式 for 语句的 等价形式

do
local f, s, var = mypairs(t)
    while true do
        local var1, var2 = f(s, var)
        var = var1
        if var == nil then break end

        -- for 循环中添加的语句
        print(var1,var2)

    end
end
</div>

-- 迭代形式 for 语句

for var1,var2 in mypairs(t) do
    print(var1,var2)
end

--> 1   1
--> 2   2
--> 1   1
--> 2   2
</div>

5.2.1 数组形式

ary = {[1]=1,[2]=2,[5]=5}
for i,v in ipairs(ary) do
    print(v)                    --> 1 2
end
</div>

从1开始,直到数值型下标结束或者值为 nil 时结束。

5.2.2 表遍历

table = {[1]=1,[2]=2,[5]=5}
for k,v in pairs(table) do
    print(v)                    --> 1 2 5

您可能想查找下面的文章:

  • 浅谈Lua语句

相关文章

  • Lua中ipair和pair的区别
  • Lua在windows下的安装及环境配置
  • Lua math.fmod使用时的小数问题
  • Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
  • 使用lua实现split字符串分隔
  • Lua中的闭包学习笔记
  • Lua教程(六):编译执行与错误
  • Lua和C++语言的交互详解
  • Lua中字符串(string)浅析
  • Lua教程(十四):字符串库详解

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Lua函数用法研究
    • Lua判断一个目录或文件是否存在的方法
    • Lua 中 pairs 和 ipairs 的区别
    • Lua获取系统时间和时间格式化方法及格式化参数
    • Redis教程(五):Set数据类型
    • Lua教程(二十二):userdata
    • Lua中的协同程序之resume-yield间的数据返回研究
    • Lua学习笔记之表达式
    • Lua面向对象编程学习笔记
    • Lua中的动态链接实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有