美文网首页
Lua学习笔记(3)——语句

Lua学习笔记(3)——语句

作者: 嘿小药罐 | 来源:发表于2017-03-16 18:26 被阅读22次

赋值

1.Lua支持多重赋值:a,b = 10,2*x  等价于 a = 10, b=2*x。

2.多重赋值中,先对等号右边的所有元素求值,然后才执行赋值。因此,交换两个变量只需要这么表示:

交换两个变量

3.多重赋值时,当左边个数多于右边时,多余的变量将赋为nil,当右边的个数多于左边,那么多余的值会被丢弃。

多重赋值个数不等时

局部变量与块(block)

1.用local语句来创建局部变量,局部变量的作用域仅限于声明它们的那个块:

局部变量

2.显式地界定一个块可用do-end关键字,用于严格控制某些局部变量:

do-end 块

3.“尽可能地使用局部变量”是一种良好的编程风格。局部变量可以避免将一些无用的名称引入全局环境,避免弄坏了全局环境。并且访问局部变量比访问全局变量快。最后,局部变量会随着其作用域的结束而消失,进而被GC回收。

4.Lua讲局部变量的声明当做语句处理。局部变量只有在声明之后才是可见(visible)的。

局部变量

5.创建一个局部变量foo并用全局变量foo的值初始化它,可以保存全局变量foo的值,避免被后续函数改变,并且能加速当前作用域对foo的访问。

习惯写法

6.在一个块的中间使用声明语句可以让这个变量在初始化时刻就拥有一个有意义的初值,并且缩短它的作用域,这样有助于提高代码的可读性。

控制结构

1.控制结构包括:if(条件),while、repeat、for(迭代)。其中if、for 和 while 用end结尾,repeat用until结尾,并且所有不是false和nil的值都视为真。

if then else

1.根据if后条件的真假来判断执行then或者else语句。

if 语法 嵌套的if

while

1.重复执行循环体直到while的条件为假。

while语法

repeat

1.重复执行循环体直到repeat的条件为真。

repeat语法

数字型for(numeric for)

数字型for语法

1.var从exp1变化到exp2,每次变化都已exp3为步长(step)递增var,并执行一次执行体。弱exp3不指定,默认为1。

示例

2.for的三个表达式是在循环开始前一次性求值的,并且控制变量会被自动声明为for语句的局部变量,仅在循环体内可见,在循环结束后就不存在了。如果要在循环结束后访问控制变量的值,应将值保存到另一个变量中。

控制变量是局部的 循环结束后要访问控制变量的值 i

泛型for

泛型for语法(打印数组a的所有值) 示例

1.ipairs,用于遍历数组的迭代器函数,每次循环中,i会被赋予一个索引值,同时v被赋予一个对应索引的数组元素值。

2.通过不同的迭代器,泛型for几乎可以遍历所有的东西,而且代码极具可读性。标准库中的迭代器包括:文件中每行的(io.lines),迭代table元素的(pairs),迭代数组元素的(ipairs),迭代字符串中单词的(string.gmatch)等。迭代器也能自己编写。

3.泛型for与数字for的相同点,一是循环变量是循环体的局部变量;二是执行体中绝不应该对循环变量作任何赋值。

4.具体示例,要将一周中每天名称的表days转换成它再一周中的位置:

一周中每天的名称 创建一个逆向table,以名称作为索引,位置作为值 revDays的最后结果

break与return

1.break 和 return 用于跳出当前的块。并且只能是一个块的最后一条语句,或者end,else或until前的一条语句,因为位于它们之后的语句无法被执行到。

break是then块的最后一条语句

2.break,用于结束一个循环,它只会跳出包含它的一个内部循环(for,repeat或while),而不改变外层的循环。

3.return,用于从一个函数中返回结果,或者用于简单地结束一个函数的执行。

4.如果希望在一个块中间插入一句return或break,可以使用一个显式的do块来保住一条return语句:

块中插入return或break

相关文章

  • Lua学习笔记(3)——语句

    赋值 1.Lua支持多重赋值:a,b = 10,2*x 等价于 a = 10, b=2*x。 2.多重赋值中,先对...

  • lua入门笔记 目录

    lua的中文API lua入门笔记1 类型 表达式 语句 函数lua入门笔记2 深入函数 深入函数 迭代器与泛型f...

  • Lua_for循环语句

    lua中的各种for循环语句:在Lua中for语句跟其他语言的for类似,语法上有一点点区别。Lua的for语句有...

  • Lua -<4>- 基本语法

    注:lua5.0以上版本去除了table.getn方法,可以用#tableName代替 Lua 语句:赋值语句、控...

  • HelloWorld

    lua 的第一个语句 输出语句 print("Hello World!!!"); 交互式编程 lua提供了交互式编...

  • lua学习笔记3-c调用lua

    lua C api PS:这里是默认我已经学完了lua脚本的基本知识(包括table,元表,函数,基本库, 文件i...

  • lua学习之语句篇

    语句 赋值 修改一个变量或者修改 table 中的一个字段的值 多重赋值,lua 先对等号右边的所有元素进行求值,...

  • Python ☞ day 2

    Python学习笔记之 运算符 & if语句 & while语句 & for 语句 & break语句 & con...

  • 2021-08-06_lua脚本学习笔记

    20210806_lua脚本学习笔记 1概述 1.1为什么lua脚本具有原子性 Redis保证以原子方式执行脚本,...

  • 2022-05-02_Lua脚本操作redis锁学习笔记

    20220502_Lua脚本操作redis锁学习笔记.md 1概述 释放锁要用 lua 脚本,把检查锁是不是本线程...

网友评论

      本文标题:Lua学习笔记(3)——语句

      本文链接:https://www.haomeiwen.com/subject/itdjnttx.html