当前位置: 代码网 > it编程>前端脚本>Lua > 浅谈Lua语句

浅谈Lua语句

2024年05月19日 Lua 我要评论
lua 中的语句支持赋值,控制结构,函数调用,还有变量声明。不允许空的语句段,因此 ;; 是非法的。1 语句组 | chuncks([';'] 应该是表示语句组后面 ; 是可选项。)2 语句块 | b

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

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

1 语句组 | chuncks

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

2 语句块 | blocks

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

3 赋值 | assignment

lua 支持多重赋值。

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

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

特别地,有

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

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

4 控制结构

4.1 条件语句

4.2 循环语句

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

例如:

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,可以省略。

等价于

5.2 迭代器形式

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

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

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

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

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

-- 迭代形式 for 语句

5.2.1 数组形式

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

5.2.2 表遍历

遍历整个表的键值对。

关于迭代器的更多内容,可参考lua 迭代器和泛型 for。

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关文章:

  • 详解Lua中的数据类型

    详解Lua中的数据类型

    lua是动态类型语言,所以变量没有类型,仅值有类型。值可以被存储在变量中,作为参数传递,并作为结果返回。在lua中虽然我们没有变量的数据类型,但我们有类型的值。... [阅读全文]
  • Lua中计算、执行字符串中Lua代码的方法

    Lua中计算、执行字符串中Lua代码的方法

    一、lua中执行字符串运行过程中有个问题,我有个字符串,是一个数学表达式,如何计算这个字符串表达式的值呢?比如,local param = "7*100", 我... [阅读全文]
  • Lua中算术运算符的使用示例

    Lua中算术运算符的使用示例

    下表列出了所有的lua语言支持的算术运算符。假设变量a持有10和变量b持有20,则:例子试试下面的例子就明白了所有的lua编程语言提供了算术运算符:当执行上面的... [阅读全文]
  • lua中赋值类型代码详解

    lua中赋值类型代码详解

    我们来看看lua vm在解析下面源码并生成bytecode时的整个过程: foo = "bar" local a, b = "a", "b" foo = a首先... [阅读全文]
  • Lua中关系运算符的使用教程

    Lua中关系运算符的使用教程

    下表列出了所有的lua语言支持的关系运算符。假设变量a持有10和变量b持有20则:示例试试下面的例子就明白了所有的lua编程语言提供的关系运算符:当建立并执行上... [阅读全文]
  • Redis教程(五):Set数据类型

    Redis教程(五):Set数据类型

    一、概述: 在redis中,我们可以将set类型看作为没有排序的字符集合,和list类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com